用户定义注释中两个元注释(目标和保留)的确切默认值是什么?
public @interface AnnotationWithDefaultProps {
}
答案 0 :(得分:10)
根据源代码,无论何时使用注释,它们都没有默认值,这意味着您必须提供默认值。缺少注释的含义在javadoc中定义:
Target
表示
如果注释类型声明中不存在Target元注释,则可以在任何程序元素上使用声明的类型。
和Retention
意味着
如果注释类型声明中没有保留注释,则保留策略默认为RetentionPolicy.CLASS。
答案 1 :(得分:2)
严格地说,没有指定注释的默认值。注释根本就不存在。
但特别是对于这两个人,
http://download.oracle.com/javase/1.5.0/docs/api/java/lang/annotation/Retention.html说
如果注释类型声明中没有保留注释,则保留策略默认为RetentionPolicy.CLASS。
并且等效于目标,
如果注释类型声明中不存在Target元注释,则可以在任何程序元素上使用声明的类型。
答案 2 :(得分:1)
默认编译器行为(如果没有注释)
@目标
<块引用>如果注解类型 T 上不存在 @Target 元注解, 那么一个 T 类型的注解可以写成任何修饰符 类型参数声明除外。
参数声明为ElementType.TYPE_PARAMETER(适用于参数化类型、泛型声明)
Java SE 8/11
@Retention
<块引用>指示带有注释类型的注释要保留多长时间 保留。如果注释类型上不存在 Retention 注释 声明,保留策略默认为 RetentionPolicy.CLASS。
Java SE 8/11