注解是什么?有什么作用?
特殊的标记,可以在编译、类加载、运行时读取,并执行相应的操作。通过Annotation可以在不改变代码逻辑的情况下,进行一些信息补充。可以把一些重复的工作简化并自动化。
元注解
@Target
定义了Annotation所修饰的对象范围,取值: ElementType.CONSTRUCTOR:用于描述构造器 ElementType.FIELD:用于描述域 ElementType.LOCAL_VARIABLE:用于描述局部变量 ElementType.METHOD:用于描述方法 ElementType.PACKAGE:用于描述包 ElementType.PARAMETER:用于描述参数 ElementType.TYPE:用于描述类、接口(包括注解类型) 或enum声明
@Retention Source、Class、Runtime
定义了该Annotation被保留的时间长短,取值: - RetentionPoicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;用于做一些检查性的操作,比如 @Override 和 @SuppressWarnings - RetentionPoicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;用于在编译时进行一些预处理操作,比如生成一些辅助代码(如 ButterKnife) - RetentionPoicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;用于在运行时去动态获取注解信息。
@document 标记是否可以文档化
@inherit 允许子类继承父类的注解
自定义注解
21 Annotation
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 本文章涉及代码已放到github上annotation-study 1.Annotation为何而来 What:A...