十,Annotation
来源:互联网 发布:js构造函数prototype 编辑:程序博客网 时间:2024/05/16 13:06
5个基本的Annotation
- @Override
- @Deprecated
- @SuppressWarnings
- @SafeVarargs(Java 7新增)
- @FunctionalInterface(Java 8新增)
5个基本的Annotation详细解释
- 限定重写父类方法:@Override
@Override就是用来指定方法重写,它可以强制一个子类必须覆盖父类的方法。该作用就是要告诉编译器检查@Override修饰的方法,保证父类要包含一个被该方法重写的方法,否则就会编译出错。该注解只能够修饰方法,不能修饰其他程序元素。
- 标示已过时:@Deprecated
@Deprecated用于表示某个程序元素(类,方法等)已过时,当其他程序使用已过时的类,方法时,编译器将会给出警告。
抑制编译器警告:@SuppressWarnings
@SuppressWarnings指示被该Annotation修饰的程序元素(以及该程序元素中的所有子元素),取消显示指定的编译器警告。@SuppressWarnings会一直作用域该程序元素的所有子元素,例如,使用@SuppressWarnings修饰某个类取消显示某个编译器警告,同时又修饰该类里的某个方法取消显示另一个编译器警告,那么该方法将会同时取消显示这两个编译器警告。Java 7的“堆污染”警告与@SafeVarargs
- Java 8的函数式接口与@FunctionalInterface
Java 8规定:如果接口中只有一个抽象方法(可以包含多个默认方法或多个static方法),该接口就是函数式接口。该注解只能够修饰接口,不能够修饰其他程序元素。@FunctionalInterface只是告诉编译器检查这个接口,保证该接口只能包含一个抽象方法,否则就会编译出错。
JDK的元Annotation
JDK除了在java.lang下提供了5个基本的Annotation之外,还在java.lang.annotation包下提供了6个Meta Annotation,其中有5个元Annotation都用于修饰其他的Annotation定义。其中@Repeatable专门用于定义Java 8新增的重复注解。
1,@Retention
@Retention只能用于修饰Annotation定义,用于指定被修饰的Annotation可以保留多长时间,@Retention包含一个RetentionPolicy类型的value成员变量,所以使用@Retention时候必须为该value成员变量指定值。
value成员变量的值只能是如下三个:
- RetentionPolicy.CLASS:编译器将把Annotation记录在class文件中。当运行java程序时,JVM不可以获取Annotation信息。这是默认值
- RetentionPolicy.RUNTIME:编译器将把Annotation记录在class文件中。当运行java程序时,JVM可以获取Annotation信息,程序也可以通过反射获取该Annotation信息。
- RetentionPolicy.SOURCE:Annotation只保留在源代码中,编译器直接丢弃这种Annotation。
2,@Target
3,@Documented
@Documented用于指定被该元Annotation修饰的Annotation类将被javadoc工具提取成文档,如果定义Annotation类时候使用了@Documented修饰,则所有使用该Annotation修饰的程序元素的API文档中将会包含该Annotation说明。
4,@Inherited
@Inherited元Annotation指定被它修饰的Annotation将具有继承性——如果某个类使用了@Xxx注解(定义该Annotation时使用了@Inherited修饰)修饰,则其子类将自动被@Xxx修饰。
- 十,Annotation
- annotation
- Annotation
- Annotation
- Annotation
- Annotation
- Annotation
- Annotation
- Annotation
- annotation
- Annotation
- Annotation
- @Annotation
- Annotation
- Annotation
- Annotation
- Annotation
- Annotation
- SQL基础(2):数据查询
- Java输出系统当前的日期(年月日时分秒毫秒)
- bat批处理zip加密压缩
- MultiDex使用中导致的crash(VerifyError)问题解决方案
- xhtml中使用CDATA标记
- 十,Annotation
- IEEE802.11协议基础知识
- Vue.js 快速入门
- Centos7开放端口
- 蓝桥杯ALGO_03(k好数)
- rviz segmentation fault / corrupted double-linked list错误
- poj 3294 Life Forms (后缀数组)
- 编程只是api的堆叠吗?
- URL编码表/Base64编码表/HTTP消息含义