//--1. 声明注解
//@Retention(RetentionPolicy.SOURCE) //保留到源代码 仅在源代码上使用这个注解,编译成Class时注解没有了
//@Retention(RetentionPolicy.CLASS) //保留到Class,默认
@Retention(RetentionPolicy.RUNTIME) //保留到运行时, 如果需要在程序中获取注解信息,必须作用在运行时
@Target({ElementType.TYPE,ElementType.METHOD,
ElementType.FIELD,ElementType.PACKAGE,
ElementType.CONSTRUCTOR})
@interface A{
String value();
String color() default "bulue";
int[] arr() default {1,2,3};
//属性类型:8种基本 String Class 数组(这些类型的一维数组) 枚举 注解
}
//--2. 使用注解
@A("abc")
class B{
}
//--3. 检测
class C{
public void show(){
boolean b = B.class.isAnnotationPresent(A.class);
if(b){
A a = B.class.getAnnotation(A.class);
System.out.println(a.color());
System.out.println(a.arr());
}
}
}