注解总结

******注解*****Annotation
概述:Java提供了一种原程序中的元素关联任何信 息和任何元数据的途径的方法

元数据:可以理解为满足某种结构的数据key=value

注解和注释的区别:
注释只能够在源码中存在
注解不仅能在源码中存在,而且作用在编译时期和运行时期。

***************************************
常见的注解:
1,@override 重写方法
表示该直接修饰的方法必须满足重写的规则,否则编译报错,该注解有编译器提取识别。

2,@Deprecated 表示该方法已经过时了

3,suppressWarnings 表示忽略警告, 可以通过这个注解消除警告线,但是并没有去除安全隐患。

4,FunctionInterface
表示当前接口是一个函数接口,
函数接口:当一个接口中只有一个抽象方法的时候 成为函数式接口
抽象方法:抽象方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。当一个方法为抽象方法时,意味着这个方法必须被子类的方法所重写。


注解的分类
1)按照运行机制划分:
源码注解:只在源码中存在,编译成.class文件就 不存在了。
编译时注解:在源码和.class文件中都存在。像前 面的@Override、@Deprecated、 @SuppressWarnings,他们都属于编译时 注解。 执行时就不存在

运行时注解:在运行阶段还起作用,甚至会影响运 行逻辑的注解。开发者还可以获取该 注解。

2)按照来源划分:
【来自JDK的注解——来自第三方的注解——自定义注解】

3)元注解:
元注解是给注解进行注解,可以理解为注解的注解就是元注解。

**************************************
注解的语法:
1,注解是有@interface关键字来修饰
//不是接口
2,注解的成员,
//String name();
可默认值int age() default 18;
也可是常量
注意:仅看起来像接口的方法,类似成员变量,不 能有参数

成员的类型:八大基本类型,string,class,annotation,枚举,一维数组。

3,注解类可以没有成员,没有成员的注解称为标识 注解。
4,如果注解只有一个成员,则成员名必须取名为 value(),在使用时可以忽略成员名和赋值号( =)。
**************元注解

@Target({ElementType.METHOD,ElementType.TYPE})
是这个注解的作用域

@Retention(RetentionPolicy.RUNTIME)
是它的生命周期

@Inherited
是一个标识性的元注解,它允许子注解继承它。

@Documented
生成javadoc时会包含注解。

***************************************
注解的使用:
四种格式:
格式一:@<注解名>(<成员名1>=<成员值1>,<成员名 2>=<成员值2>,…)
注意:有多少属性就写多少属性

格式二:@注解名称(属性的值)
注意:适用于只有一个属性的情况

格式三:@注解名称({属性值1,属性值2,属性值 3,....})
注意:使用于属性类型是数组的情况

格式四:@注解名称
注意:适用于是标记注解的情况


创建一个注解,:用四个元注解定义这个注解

创建类关联这个注解。

posted @ 2019-04-19 20:50  长木木弓  阅读(201)  评论(0编辑  收藏  举报