注解

2018-12-24  本文已影响0人  主音King

注解实现原理

底层使用反射实现。申明注解类需要加 @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

上一篇下一篇

猜你喜欢

热点阅读