java内置注解
- @Override
- @Deprecate
- @SuppressWarning
自定义注解
1、注解的本质为一个接口,因此可以定义抽象方法
2、这些抽象方法在注解中成为属性,属性的类型只能为以下类型:
- int类型
- string类型
- 枚举类型
- 注解类型
- 以上类型的数组
3、定义属性时可以使用default关键字设置属性的默认值
public @interface Annotation{
public abstract int show();//int类型
public abstract String name() default "zhangsan";
}
4、使用注解时,需要对注解的所有属性进行赋值,多个属性用逗号分隔如
@Annotation(show=1,name="hello");
class MyClass{
}
4、当注解只有一个属性,并且属性名称为value时,则使用时不需要声明属性名称,直接赋值就可以了,如
public @interface Annotation2{
public abstract int value();//int类型
}
@Annotation2(12);
class MyClass{
}
元注解
元注解是作用于注解的注解,在java.lang.annotation包内,内置的元注解有以下几个
- @Documented 指明该注解是否被抽取到api文档中
- @Inherited 指明子类将继承当前注解
- @Repeatable
- @Retention 指明注解作用于哪个阶段
- @Target 指明注解作用于哪个类型
解析注解
定义了注解以后,我们需要解析注解中定义的属性的值,使用java的反射类获取
class Main{
public static void main(String[] args){
//1.获取该类的字节码文件对象
Class<ReflectTest> reflectTestClass = ReflectTest.class;
//2.获取上边的注解对象
Annotation an = reflectTestClass.getAnnotation(Annotation.class);
//3.调用注解对象中定义的抽象方法,获取返回值
int show = an.show();
String name = an.name();
System.out.println(show);
System.out.println(name);
}
}
网友评论