美文网首页
Android-注解在Android中的应用

Android-注解在Android中的应用

作者: BlingBest | 来源:发表于2019-01-09 10:37 被阅读110次

    Android 应用开发中对注解的使用达到了淋漓尽致的地步,无论是运行时注解,还是编译时注解,或是标准注解,都被广泛使用着,Android Support Library甚至专门推出一个注解主持库Support Annotation,各种开源库中也不乏注解的应用。

    注解的定义


    注解是java语言的特性之一,它是在源代码中插入的标签,这些便签在后面的编译或者运行过程中起到某种作用,每个注解都必须通过注解接口@interface进行声明,接口的方法对应着注解的元素,我们先来看看Android上著名的View注入框架ButterKnife的Bind注解的源码

    @interface声明会创建一个实际的java接口,与其他任何接口一样,注解也将会编译成.class文件,注解接口中的元素声明实际上是方法声明,注解接口中的方法没有参数,没有throws语句,也不能使用泛型

    标准注解


    Java API中默认的注解我们称之为标准注解,它们定义在java.long,java.long.annotation和javax.annotation包中,按照使用场景不同,我们分为如下三类

    编译相关注解

    编译相关的注解是给编译器使用的,有以下几种

    1 @Override :编译器会检查被注解的方法是否真的重载了一个来自父类的方法,如果没有,编译器将会给出错误提示。

    2 @Deprecated:可以用来修饰任何不再鼓励使用或者已被弃用的属性和方法等

    3 @SuppresWarnings:可用于除了包之外的其他声明项中,用来抑制某种类型的警告

    4 @SafeVarargs:用于方法和构造函数,用来断言不定长参数可以安全使用

    5 @Generated:一般是给代码生成工具使用,用来表达这段代码不是开发者手动编写的,而是工具生成的,被@Generated修饰的代码一般不建议手动修改它

    6 @FuncationalInterface:用来修饰接口,表示对应的接口是带单个方法的函数式接口

    资源相关注解

    资源相关注解有四个,一般用在Java EE领域,Android应该不会使用到

    元注解

    元注解,就是用来定义和实现注解的注解,总共有如下五种:

    1 @Target:这个注解的取值是一个ElementType类型的数组,用来指定注解所适用的对象范围,总共有十种不同的类型,根据定义的注解进行灵活的组合

    同时支持多种类型的注解定义如下:

    如果一个注解的定义没有使用@Target修饰,那么它可以用在除了TYPE_USE和TYPE_PARAMEYER之外的其他类型声明中

    1 @Retention:用来指明注解的访问范围,也就是在什么级别保留注解,有如下三种选择:

     源码级注解:在定义注解接口时,使用@Retention(RetentionPolicy.SOURCE)修饰的注解,该类型的注解信息只会保留在.java源码里,源码经过编译后,注解信息会被丢弃,不会保留在编译好的.class文件中

     编译时注解:在定义注解接口时,使用@Retention(RetentionPolicy.CLASS)修饰的注解,该类型的注解信息会保留在.java源码里和.class文件里,在执行的时候,会被Java虚拟机丢弃,不会加载到虚拟机中

     运行时注解:在定义注解接口时,使用@Retention(RetentionPolicy,RUNTIME)修饰的注解,Java虚拟机在运行期也保留注解信息,可以通过反射机制读取注解的信息

    2 @Documented :表示被修饰的注解应该被包含在被注解项的文档中

    3 @Inherited:表示该注解可以被子类继承的

    4 @Repeatable :表示这个注解可以在同一个项上面应用多次,不够这个注解是在Java8中才引入的

    相关文章

      网友评论

          本文标题:Android-注解在Android中的应用

          本文链接:https://www.haomeiwen.com/subject/dglwrqtx.html