JDK内置的标准注解
1、@Override :
2、@Deprexated :
3、Supperwarnings
4、自定义注解:
1、@Override : 用于修饰子类的方法覆盖了父类中的方法
只是一个标记,用于标注一个方法。它表示,被它标注的方法覆盖了父类的方法。如果一不小心,子类的方法名写错了,有了@Override之后,编译时会报错。也就是说被@Override标注的方法如果没有覆盖父类的方法,编译时报错。
2、@Deprexated : 用于修饰已经过时了的方法,不推荐使用的方法;
是一个标记注解,用于修饰一个方法。它表示此方法不推荐使用。无论是继承、覆盖或直接使用此方法,编译器都会给出警告。
3、@Supperwarnings : 告诉java编译器禁止编译警告。
字面翻译就是抑制警告,它用于告诉编译器,对被标注的这句代码不要给出特定的警告。
4、自定义注解:
Java 允许我们自定义注解:它提供 元注解 用于自定义注解
元注解的目的就是让开发者自定义注解,元注解负责注解自定义注解元注解:
1、@Target
*@Target用来说明自定义注解可以用在什么地方,其ElementType取值有:
- CONSTRUCTOR:用于描述构造器
- FIELD:用于描述域
- LOCAL_VARIABLE:用于描述局部变量
- METHOD:用于描述方法
- PACKAGE:用于描述包
- PARAMETER:用于描述参数
- TYPE:用于描述类、接口(包括注解类型) 或enum声明
使用示例:@Target(ElementType.FIELD)*
2、@Retention
*@Retention用来描述自定义注解的生命周期,其RetentionPoicy取值有:
- SOURCE:在源文件中有效
- CLASS:在class文件中有效
- RUNTIME:在运行时有效
使用示例:@Retention(RetentionPolicy.RUNTIME)*
3、@Documented
@Documented用于表示自定义注解可以被javadoc之类的工具文档化,没有成员。
使用示例:@Documented
4、@Inherited
@Inherited 元注解是一个标记注解,@Inherited阐述了某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。
@Inherited annotation类型是被标注过的class的子类所继承。类并不从它所实现的接口继承annotation,方法并不从它所重载的方法继承annotation。
当@Inherited annotation类型标注的annotation的Retention是RetentionPolicy.RUNTIME,则反射API增强了这种继承性。如果我们使用java.lang.reflect去查询一个@Inherited annotation类型的annotation时,反射代码检查将展开工作:检查class和其父类,直到发现指定的annotation类型被发现,或者到达类继承结构的顶层。
使用示例:@Inherited
开始自定义注解
定义注解格式:
public @interface 注解名{
定义体
}
注解参数的可支持数据类型:
所有基本数据类型(int,float,boolean,byte,double,char,long,short)
String类型
Class类型
enum类型
Annotation类型