定义注解

使用@interface关键字进行定义注解。
例:

public @interface Property { }

参数

格式:
<value_type> value() [default default_value]
例:

public @interface Property {  
    boolean getter() default true;  
    boolean setter() default true;  
}

元注解

元注解是用来修饰注解的注解。

@Target

定义注解可以应用于哪些元素上。
@Target的值有:

  • 类、接口、枚举或注解:ElementType.TYPE
  • 字段:ElementType.FIELD
  • 方法:ElementType.METHOD
  • 方法参数:ElementType.PARAMETER
  • 构造函数:ElementType.CONSTRUCTOR
  • 局部变量:ElementType.LOCAL_VARIABLE
  • 注解:ElementType.ANNOTATION_TYPE
  • 包声明:ElementType.PACKAGE
    例:
@Target(ElementType.FIELD)
public @interface Property {  
    boolean getter() default true;  
    boolean setter() default true;  
}

@Retention

定义注解的生命周期。
@Retention的值有:

  • 编译期:RetentionPolicy.SOURCE
  • class文件:RetentionPolicy.CLASS
  • 运行时:RetentionPolicy.RUNTIME
    默认值为RetentionPolicy.CLASS
@Retention(RetentionPolicy.CLASS)
public @interface Property {  
    boolean getter() default true;  
    boolean setter() default true;  
}

@Repeatable

定义注解是否可以重复。

@Inherited

定义注解是否是可继承的。如果一个类使用使用@Inherited的注解,它的子类将自动继承该注解。