Java Annotation的默认属性

时间:2011-02-15 22:31:33

标签: java annotations

用户定义注释中两个元注释(目标和保留)的确切默认值是什么?

public @interface AnnotationWithDefaultProps {
}

3 个答案:

答案 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