java.lang.annotation包中有一个Annotation的接口,它是所有注解类型扩展的公共接口
@Override
@Override 注解是用来指定方法重写的,只能修饰方法并且只能用于方法重写,不能修饰其它的元素。
它可以强制一个子类必须重写父类方法或者实现接口的方法。
@Override public String toString(){ return super.toString(); }
@Deprecated(不推荐使用)
@Deprecated 可以用来注解类、接口、成员方法和成员变量等,用于表示某个元素(类、方法等)已过时。
当其他程序使用已过时的元素时,编译器将会给出警告。
@Deprecated public static void test(){ System.out.println("aa"); } public static void main(String[] args){ test(); }
@SuppressWarnings
@SuppressWarnings 注解指示被该注解修饰的程序元素(以及该程序元素中的所有子元素)取消显示指定的编译器警告,且会一直作用于该程序元素的所有子元素。
注解的使用有以下三种:
- 抑制单类型的警告:@SuppressWarnings("unchecked")
- 抑制多类型的警告:@SuppressWarnings("unchecked","rawtypes")
- 抑制所有类型的警告:@SuppressWarnings("unchecked")
- 抑制所有警告:@SuppressWarnings("all")
元注解(负责注解其他注解)
@Target ---用于描述注解的使用范围(被描述的注解可以用在什么地方)---@Target({ ElementType.METHOD })
CONSTRUCTOR | 用于构造方法 |
FIELD | 用于成员变量(包括枚举常量) |
LOCAL_VARIABLE | 用于局部变量 |
METHOD | 用于方法 |
PACKAGE | 用于包 |
PARAMETER | 用于类型参数(JDK 1.8新增) |
TYPE | 用于类、接口(包括注解类型)或 enum 声明 |
@Retention ---表示需要在什么级别保存该注释信息,用于描述注解的生命周期(该注解被保留的时间长短)
- SOURCE:在源文件中有效(即源文件保留)
- CLASS:在 class 文件中有效(即 class 保留)
- RUNTIME:在运行时有效(即运行时保留)
生命周期大小排序为 SOURCE < CLASS < RUNTIME,前者能使用的地方后者一定也能使用。
@Document ---说明该注解将被包含在javadoc中(修饰的注解类会被 JavaDoc 工具提取成文档)
@Inherited ---说明子类可以继承父类中的注解
@Repeatable ---是否可重复注解
- RetentionPolicy.SOURCE : 仅存在于源代码中,编译阶段会被丢弃,不会包含于class字节码文件中。
- RetentionPolicy.CLASS : 默认策略,在class字节码文件中存在,在类加载的时被丢弃,运行时无法获取到。
- RetentionPolicy.RUNTIME : 始终不会丢弃,可以使用反射获得该注解的信息。自定义的注解最常用的使用方式。
自定义注解
自定义注解和创建一个接口相似,自定义注解的格式是以@interface为标志的
@Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) @interface SPI { //注解的参数:注解类型——参数名();
String name() default ""; //default是设置默认值为空
int age();
}
public class test03(){
//驻俄界可以显示赋值,如果没有默认值,就必须给注解赋值
@SPI(name="aa",age=11)
public void test(){}
}
标签:SuppressWarnings,class,---,用于,注解,public From: https://www.cnblogs.com/xinyu-yudian/p/16795155.html