一 注解概念
1 什么是注解
Annotation(注解)即是Java供给了一种元程序中的元素相关任何信息和着任何元数据(metadata)的途径和办法
基本的规则:annotation不能影响程序代码的执行,无论增加、删除annotation,代码都始终如一的执行
2 什么是metadata
元数据:描述数据的数据。
1)元数据以标签的形式存在于Java代码中
2)元数据描述的信息是类型安全的
3)元数据需要编译器之外的工具额外的处理用来生成其他的程序部件
4)元数据可以只存在于Java源代码级别,也可以存在于编译之后的Class文件内部
二 注解分类
1 系统内置标准注解
1)Override:复写父类的方法【标记型的注解】
2)Deprecated:过时的
3)SuppressWarnnings:抑制编译器对部分不合理代码的警告
4)@SafeVarargs:@SafeVarargs是JDK 7 专门为抑制“堆污染”警告提供的
5)@FunctionalInterface:就是用来指定某个接口必须是函数式接口,否则就会编译出错【修饰函数式接口】
3 元注解【修饰注解的注解】
1)@Target:定义注解的作用目标
@Target(ElementType.TYPE) //接口、类、枚举、注解
@Target(ElementType.FIELD) //字段、枚举的常量
@Target(ElementType.METHOD) //方法
@Target(ElementType.PARAMETER) //方法参数
@Target(ElementType.CONSTRUCTOR) //构造函数
@Target(ElementType.LOCAL_VARIABLE) //局部变量
@Target(ElementType.ANNOTATION_TYPE) //注解
@Target(ElementType.PACKAGE) //包
2)@Retention: 定义注解的保留策略
@Retention(RetentionPolicy.SOURCE)
//注解仅存在于源码中,在class字节码文件中不包含
@Retention(RetentionPolicy.CLASS)
// 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,
@Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到
3)@Document:说明该注解将被包含在javadoc中
4)@Inherited:说明子类可以继承父类中的该注解
三 Android support annotations
1)Nullness注解:标识代码的参数或返回值是否可以null
NullAble:可以为null
2)Resource Type注解:资源类型注解 【@StringRes资源ID号】
3)Threading注解
4)Overriding Methods 注解: @CallSuper,调用父类的方法
四 总结
注解是如何被处理的?
Annotation【看补充文件】
<u>https://www.jianshu.com/p/28edf5352b63</u>
网友评论