作用
可以看作是一种特殊的注释,主要用于修饰类、方法或者变量,提供某些信息供程序在编译或者运行时使用
自定义注解
public @interface Book {
String value(); // 特殊属性
double price();
}
元注解
修饰自定义注解
@Target:生效范围
@Retention:生效时间
@Target({ElementType.METHOD,ElementType.FIELD}) // 只在方法和成员变量上使用
@Retention(RetentionPolicy.RUNTIME) // 一直活着,在运行阶段这个注解也不消失
public @interface MyTest {
}
注解解析
获取放在类注解的相关信息 c.getDeclaredAnnotation(Bookk.class)
@Test
public void parseClass(){
// a.先得到类对象
Class c = BookStore.class;
// b.判断这个类上面是否存在这个注解
if(c.isAnnotationPresent(Bookk.class)){
//c.直接获取该Bookk注解对象
Bookk book = (Bookk) c.getDeclaredAnnotation(Bookk.class);
System.out.println(book.value());
System.out.println(book.price());
System.out.println(Arrays.toString(book.author()));
}
}
@Bookk(value = "《情深深雨濛濛》", price = 99.9, author = {"琼瑶", "dlei"})
class BookStore{
}
查看是否有MyTest这个注解
method.isAnnotationPresent(MyTest.class)