定义注解
使用@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的注解,它的子类将自动继承该注解。