Java基础_注解

2020-03-02  本文已影响0人  dashingqi

理解

具体描述

注解的定义

注解的应用

元注解

Retention

当Retention注解应用到一个注解上的时候,它解释说明了这个注解的存活时间。

有如下几种取值

@Documented
@Target

@Target有如下的取值

@Inherited

遗传、继承的意思

并不是说注解本身是可以遗传的。而是说一个超类被@Inherited注解过的注解注解了,那么如果子类没有被任何注解应用的话,那么这个子类就继承了超类的注解

@Inherited
@Retention(RetentionPolicy.RUNTIME)
public @interface DemoAnnotation{}

@DemoAnnotation
public class Demo{}

public class Demo1 extends Demo{}

如上述代码,@DemoAnnotation被注解@Inherited修饰,Demo被注解@DemoAnnotation所修饰,Demo1继承至Demo,Demo1没有被其他注解所修饰,那么Demo1就拥有了@DemoAnnotation的注解了

@Repeatable

Repeatable是可重复的 在Java1.8时加进来的,算是一个新特性

注解的属性

注解的属性也叫做成员变量。注解只有成员变量,没有方法。

注解的成员变量在注解的定义中以“无形参的方法”形式声明的

其方法名定义了该成员变量的名字,其返回值定义了成员变量的类型

Java中预置的注解

@Deprecated

该注解用来表示过时的方法、类、成员变量

编译器在编译阶段遇到这个注解会发出警告,告诉我们此时正在调用一个过时

@Override

提示字类要复写父类中被@Override修饰的方法

@SuppressWarnings

阻止警告的意思,之前被@Deprecated修饰方法在调用的时候,会发出警告,如果我要忽略掉这种警告可以使用@SuppressWarnings 修饰

@SuppressWarnings("deprecation")
    public static void main(String[] args) {
        Test test = new Test();
        //就不会提示过时
        test.speak();
        test.say();
    }
@SafeVarargs

参数安全类型的注解

目的是提醒开发者不要用参数做一些不安全的操作,它的存在会阻止编译器产生unchecked这样的警告。

在Java1.7版本中加入的。

@FunctionalInterface

函数式接口注解

java1.8版本引入的新特性

函数式接口标记,可以很容易转换成Lambda表达式

注解的提取

形象的比喻就是你把这些注解标签在合适的时候撕下来,然后检阅上面的内容信息。

想要正确检阅注解,离不开一个手段,那就是反射。

注解与反射

注解通过反射获取

上述代码是注解到类上的提取,属性、方法上的注解也是可以提取处理。同样还要借助于反射

注解的用处

官方解释:注解是一系列元数据,它提供数据用来解释程序代码,但是注解并非是所解释的代码本身的一部分。注解对于代码的运行效果没有直接影响。

值得注意的是 注解不是代码本身的一部分

注解是给编译器或者APT(Annotation Processing Tool)用的

注解到底有什么用?取决于你像用它来干什么

Android中注解的应用实例

JUnit测试框架

ButterKnife

Dagger2

Retrofit

注解知识点

注解知识点.png
上一篇 下一篇

猜你喜欢

热点阅读