自定义注解

@Deprecated:
声明一个不建议使用的方法


@SuppressWarning({"unchecked","depercation"}):
压制警告
unchecked:执行了未检查的转换时警告;如:泛型操作中没有指定泛型类型  
depercation:使用了不赞成使用的类或方法时的警告
path:当设置了一个错误的类路径、源文件路径时出现的警告
serial:当在可序列化的类上缺少serialVersionUID定义时的警告
finally:任何finally字句不能正常完成时的警告
all:关于以上所有情况的警告

自定义注解:
public @interface Annotation名{
    数据类型 变量名称() default  默认值;
}
@interface 相当于继承了Annotation接口

@Retention:
定义Annotation的保存范围
RetentionPolicy变量的3个范围
SOURCE:此Annotation类型的信息只会保留在程序源文件(*.java)中,编译之后不会保存在编译好的类文件(*.class)中
CLASS:此Annotation类型的信息保留在程序源文件(*.java)和编译好的类文件(*.class)中。在使用此类时,这些Annotation信息将不会被加载到虚拟机(jvm)中,如果一个Annotation声明时没有指定范围,则默认此范围
RUNTIME:此Annotation类型的信息保留在程序源文件(*.java)和编译好的类文件(*.class)中,在执行时也会加载到jvm中

@Target:
明确指出一个Annatation的使用位置
ANNOTATION:只能用在注释的声明上   
CONSTRUCTOR:只能用在构造方法的声明上
FIELD:只能用在字段的声明(包括枚举常量)上
LOCAL_VARIABLE:只能用在局部变量的声明上
METHOD:只能用在方法的声明上
PACKAGE:只能用在包的声明上
PARAMETER:只能用在参数的声明上
TYPE:只能用在类、接口、枚举类型上

@Documented:
此Annotation在生成java doc时就可以加入类或方法的一些说明信息

@Inherited:
用于标识一个父类的注释是否可以被子类所继承

原文地址:https://www.cnblogs.com/archimedes-euler/p/12171358.html