注解实现原理
底层使用反射实现。申明注解类需要加 @interface 注解类里只支持基本类型、String以及枚举类型。
@Target--注解用到的地方
ANNOTATION_TYPE,//给注解注解(这貌似把自己不当类来看)
ElementType.FIELD //注解作用于变量
ElementType.METHOD //注解作用于方法
ElementType.PARAMETER //注解作用于参数
ElementType.CONSTRUCTOR //注解作用于构造方法
ElementType.LOCAL_VARIABLE //注解作用于局部变量
ElementType.PACKAGE //注解作用于包
Retention--运行状态
SOURCE, //源码状态运行,
CLASS, //编译类文件时运行
RUNTIME //运行时运行
运行时注解:运行时用反射,动态获取对象、属性、方法等。一般IOC框架,牺牲效率。Eventbus使用运行时注解。
编译时注解:编译时进行额外操作。如ButterKnife自动生成辅助类,需要依赖apt,类继承AbstractProcessor,重写process方法。
@Documented--生成说明文档
是否会保存到javadoc文档中
@Inherited--允许子类继承父类中的注解
是否可以被继承,默认false
网友评论