当前位置: 首页 > 知识库问答 >
问题:

为什么BasPackageClass(@ComponentScan)是“类型安全”?

仲孙兴旺
2023-03-14

在这种情况下,有人能帮助理解类型安全的含义吗?

我对Javadoc-https://docs . spring . io/spring-framework/docs/3 . 1 . 4 . release/Javadoc-API/org/spring framework/context/annotation/components can . html # base packages()的理解有些不太清楚

共有1个答案

满自明
2023-03-14
java prettyprint-override">public @interface ComponentScan {
  
  String[] basePackages() default {};
  Class<?>[] basePackageClasses() default {};
 
}

这意味着的基本包的基本包类提供相同的功能,但的基本包类具有类型安全的优势。

类型安全的优势可以帮助您在真正执行应用程序之前知道您是否真的将该值配置为正确的类型,主要是因为如果您配置值不正确,编译器将不允许您编译,因此您无法执行应用程序。所以我们说类型安全可以帮助在编译时而不是运行时检测错误。

回到这个例子,因为< code>basePackages类型是< code>String,所以您可以将其配置为任何值,即使它是一个无效的包名,您仍然可以编译和执行应用程序,但是当它试图扫描包中的组件时会抛出异常,因为它们是无效的。

但是,由于basePackageClasses的类型是,如果您将其配置为无效的包名称,它将无法编译,并且您无法执行应用程序。因此,在真正执行应用程序之前,检查您配置的包是否真的有效是有帮助的。

 类似资料:
  • 问题内容: 考虑以下代码片段 Java的为什么能保证在收集情况的正确类型(改变一个编译时错误的一般类型的收集到如双引线),但不是在阵列情况下(编译罚款,尽管中给出了一个,而不是一个,而是抛出如果如上所述使用不正确)? 如果我更改流的类型而不更改调用中给定的值,那么生成编译时错误的最佳方法是什么? 问题答案: 该方法的签名如下所示。请注意,类型参数和完全无关。 在ReferencePipeline.

  • 问题内容: 什么是 称为(反对) 您知道将尖括号放在哪里吗?我经常使用它,但不知道名字-烦我。搜索非常困难-Google会忽略字符。 (注意:这是Java) 问题答案: 泛型!:)

  • 问题内容: 我在Swift范例中看到值,例如带下划线的数字。这些值默认具有什么类型? 它是否取决于我为其分配的变量的类型?它们对我来说看起来很有趣而且很新,所以我想知道,如果不按类型定义就抛出它们,该如何处理? 问题答案: 从文档(《 Swift编程语言》->《语言指南》->《基础知识》->《数字文字》): 数字文字可以包含额外的格式,以使其更易于阅读。整数和浮点数都可以用额外的零填充,并且可以包

  • 问题内容: 什么是原始类型? 问题答案: Java语言规范对原始类型的定义如下: JLS 4.8原始类型 原始类型定义为以下之一: 通过采用通用类型声明的名称而没有随附的类型参数列表形成的引用类型。 数组类型,其元素类型为原始类型。 未从的超类或超接口继承static的原始类型的非成员类型。RR 这是一个例子说明: 这是参数化类型(JLS 4.5)。通常,通俗地简称MyType为这种类型是很常见的

  • 这些类型有时也是这样写的: 我曾听人说过“Forall就像Lambda--类型级别的抽象”。因此Foo是一个接受类型(例如int)并生成值的函数(例如int->int类型的函数)。许多语言都推断类型参数,这样您就可以编写而不是。 假设我们有一个对象,类型为。对于这个对象,我们可以做的是首先通过编写来传递一个类型。然后返回一个类型为的值。但是,某些无效。例如,此: Exists具有相同的类型。For

  • 。 > 有人能简单定义一下是什么吗? 是 泛型是禁止对象上非< code>K的额外键,还是允许它们,只是指示它们的属性不被转换为< code>T? 对于给定的示例: 它和这个完全一样吗