//自定义注解
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface CustomAnnotation {
public String idol() default "";//默认值为空值
//或者使它默认值不为空
//public String idol() default "你好";
}
/*自定义注解的格式:
* public @interface 注解名{
* 修饰符 返回值 属性名() default/其他;
* }
* 定义注解的返回值类型:基本数据类型、String、Class、enum、Annotation
*/
@Retention(RetentionPolicy.RUNTIME):固定不变
JDK自带的注解:
- @Target
- @Retention
- @Documented
- @Inherited
用于描述注解的使用范围,有一个枚举ElementType来指定,具体如下:
- CONSTRUCTOR:用于描述构造器
- FIELD:用于描述域
- LOCAL_VARIABLE:用于描述局部变量
- METHOD:用于描述方法
- PACKAGE:用于描述包
- PARAMETER:用于描述参数
- TYPE:用于描述类、接口(包括注解类型) 或enum声明
@Inherited 元注解是一个标记注解,@Inherited阐述了某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。注意,@Inherited annotation类型是被标注过的class的子类所继承。类并不从它所实现的接口继承annotation,方法并不从它所重载的方法继承annotation。
若再加上@Compenent这个注解,那么自定义的注解也有@Compenent这个功能