注解
系统内置注解
注解名 | 描述 |
---|---|
@Override |
方法重写检查 |
@Deprecated |
方法过时标注 |
@SupperessWarnings("all") |
压制全部警告,也可有其他参数 |
@FunctionalInterface |
函数式接口检查,有且只能有一个抽象方法 |
自定义注解
注解本质是一个接口,默认继承Annotation接口
定义格式和使用要求
元注解
[public] @interface 注解名称{
数据类型 属性名称() [defaule 默认值];
//定义要求
//属性的数据类型只能是基本数据类型、String、枚举、注解和他们的数组形式
//属性名后需要加括号
//使用要求,@注解名(属性名称=要赋的值)
//default可以选择性的为该属性赋值,若不为该属性赋值则使用后面的默认值
//若只有一个需要赋值的属性,并且属性名是value,则value可以省略,直接写要赋的值即可
//数据类型是数组时使用大括号包裹,若数组只有一个值大括号可以省略
...
}
元注解
@Target
描述注解可以使用的位置,若不声明该元注解则可以使用于任何位置,参数是ElementType
枚举类中的属性数组
参数 | 描述 |
---|---|
ANNOTATION_TYPE |
只能用于注释 |
TYPE |
只能用于类、接口、枚举类上 |
FIELD |
只能用于属性声明上 |
METHOD |
只能用于方法声明上 |
PARAMETER |
只能用于参数声明上 |
CONSTRUCTOR |
只能用于构造方法声明上 |
PACKAGE |
只能用于包声明上 |
@Retention
描述注解被保留的阶段,参数是RetentionPolicy
枚举类属性
参数 | 描述 |
---|---|
SOURCE |
只能保留到Java文件中 |
CLASS |
只能保留到class文件中 |
RUNTIME |
可以被加载到jvm中 |
@Inherited
描述注解是否可以被子类继承,默认情况下注解是不能被子类继承的,若想要子类继承则声明该元注解
@Documented
描述注解是否可以被抽离到javadoc文档中,默认情况下是不会在文档中显示的,若声明该注解则会在文档中显示
Comments NOTHING