Android注解原理以及应用

2019-05-04  本文已影响0人  鲁班0号

很多框架都使用了注解,什么是注解?注解的原理是什么?带着这些问题,我们开始学习一波吧!

0. 什么是注解

Annontation是Java5开始引入的新特征,中文名称叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。为程序的元素(类、方法、成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且供指定的工具或框架使用。Annontation像一种修饰符一样,应用于包、类型、构造方法、方法、成员变量、参数及本地变量的声明语句中。
简而言之:注解解释类,也就是相关对代码进行解释的特定类!

1.元注解

提到注解,不得不说一下元注解,是用于修饰注解的注解,通常用在注解的定义上。java定义有以下几种元注解:

1.1 @Target注解

@Target 用于指明被修饰的注解最终可以作用的目标是谁,也就是指明,你的注解到底是用来修饰方法的?修饰类的?还是用来修饰字段属性的?

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}

如上所示,修饰的是@Override这个注解,表示Override这个注解只能用于方法。ElementType是一个枚举变量, 有以下的几种值:

1.2 @Retention注解

@Retention 注解指定了被修饰的注解的生命周期,一种是只能在编译期可见,编译后会被丢弃,一种会被编译器编译进 class 文件中,无论是类或是方法,乃至字段,他们都是有属性表的,而 JAVA 虚拟机也定义了几种注解属性表用于存储注解信息,但是这种可见性不能带到方法区,类加载时会予以丢弃,最后一种则是永久存在的可见性。
这里的 RetentionPolicy 依然是一个枚举类型,它有以下几个枚举值可取:

1.3 其他注解

@Documented:注解是否应当被包含在 JavaDoc 文档中
@Inherited:是否允许子类继承该注解
我们不做过多介绍,详细请自行谷歌

2.java中的注解

java中已经内置了三种标准注解。

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
public @interface Deprecated {
}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
    String[] value();
}
上一篇 下一篇

猜你喜欢

热点阅读