// 标注在注解上
/*
* Target的value属性的取值:
* TYPE 类、接口、枚举等类型
* FIELD 属性
* METHOD 方法
* PARAMETER 参数
* CONSTRUCTOR 构造方法
*/
// 如果属性类型是数组,但设置的值只有一个元素时, 可以省略 {}
//@Target(value = ElementType.TYPE)
// 如果只有 value属性需要设置值, 可以省略 value =
//@Target(ElementType.TYPE)
@Target(value = { ElementType.TYPE, ElementType.FIELD })
/*
* Retention的value属性的取值:
* SOURCE, CLASS, RUNTIME(常用)
*/
@Retention(value = RetentionPolicy.RUNTIME)
@Inherited
public @interface MyAnn01 {
// 类似接口, 但可以创建对象
// 只能定义抽象方法, 注解内的抽象方法, 一般被称为 注解的属性
// 属性名就是方法名, 方法的返回值类型就是 属性的类型, 所以必须要有返回值
}
设置属性默认值
// 设置属性的默认值: default 后加上 默认值, 默认值必须符合属性的类型
int age() default 22;