目录
前言
注解,或者叫做注释,英语单词:Annotation。
注解Annotation是一种引用数据类型,编译之后也是生成xxx.class文件。
一、怎么定义一个注解
[修饰符列表] @interface 注解类型名{
//属性
数据类型 变量名() default 默认值;
}
示例:
public @interface MyAnnotation{
String name() default "张三";
}
二、注解怎么使用,都能用在什么地方?
- 注解使用时的语法格式是:
@注解类型名(属性名=属性值,属性名=属性值....)
- 注解可以出现在类,属性,方法、变量、注解类型上等........
三、JDK中内置了哪些注解
1.java.lang包下
注解名称 | 注解描述 |
---|---|
@Override | 只能注解方法,编译器会自动检查该方法是否重写了父类的方法,如果没有重写,报错。 |
@Deprecated | 这个注解标注的元素已过时。 |
2.元注解
@Target
用来标注“注解”的“注解”,这个Target注解用来标注““被标注的注解”,可以出现在哪些位置上 。
Target属性 | 作用 |
---|---|
ElementType.TYPE | 应用于类、接口(包括注解类型),枚举 |
ElementType.FIELD | 应用于字段或属性 |
ElementType.METHOD | 应用于方法 |
ElementType.PARAMETER | 应用于方法的参数 |
ElementType. CONSTRUCTOR | 应用于构造方法 |
ElementType.LOCAL_VARIABLE | 应用于局部变量 |
ElementType.PACKAGE | 应用于包 |
@Retention
用来标注“注解类型”的注解。 这个Retention注解用来标注“被标注的注解”最终保存在哪里?
Retention属性 | 作用 |
---|---|
RetentionPolicy.SOURCE | 表示该注解只被保留在java源文件中 |
RetentionPolicy .CLASS | 表示该注解被保存在class文件中 |
RetentionPolicy .RUNTIME | 表示该注解被保存在class文件中,并且可以被反射机制所读取。 |