[修饰符列表] @interface 注解类型名{
}
注:注解和注释的区别
注解:是给编译器看的,如果不合法,编译器会报错
注释:是给程序员看的,提高程序的可读性
? 用来标注 注解类型 的注解。
?@Target
用法:@Target(ElementType.METHOD)
作用:表示“被标注的注解只能出现在方法上”
取值ElementType有
TYPE--->用于描述类、接口、enum声明等
FIELD--->用于描述域
METHOD--->用于描述方法
CONSTRUCTOR--->用于描述方法
PARAMETER--->用于描述参数
LOCAL_VARIABLE--->用于描述局部变量
PACKAGE--->用于描述包
?@Retention
用法:@Retention(RetentionPolicy.SOURCE)
作用:表示被标注的注解只被保留在java源文件中
取值RetentionPolicy有
SOURCE--->表示被标注的注解只被保留在java源文件中
CLASS--->表示该注解被保存在class文件中
RUNTIME--->表示该注解被保存在class文件中,并且可以被反射机制所读取
注意:若一次性需要多个属性,需用{}括起来
// 示例
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})
public @interface MyAnnotation {
/**
* 我们通常在注解中可以定义属性,以下这个是MyAnnotation的name属性
* 看着像一个方法,但实际上我们称之为属性name
*/
String name();
String color();
int age() default 25;// 属性指定默认值
}
注解当中的属性可以是哪种类型呢?
byte?short?int?long?double?boolean?char?String?Class?枚举类型
以及以上所有的数组形式
原文:https://www.cnblogs.com/Neroblogs/p/14506453.html