1.注解,或者叫做注释类型,英文单词Annotation
2.注解Annotation是一种引用数据类型。编译之后也是生成xxx.class文件
3.注解语法格式
[修饰符列表] @interface 注解类型名{
}
4.注解怎么使用
注解使用的语法格式:
@注解类型名
注解可以出现在类上,属性上,方法上,变量上,注解还可以出现在注解类型上
5.jdk自带的注解
Deprecated
用 @Deprecated 注释的程序元素,不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。在使用不被赞成的程序元素或在不被赞成的代码中执行重写时,编译器会发出警告。
Override
表示一个方法声明打算重写超类中的另一个方法声明。如果方法利用此注释类型进行注解但没有重写超类方法,则编译器会生成一条错误消息。
SuppressWarnings
指示应该在注释元素(以及包含在该注释元素中的所有程序元素)中取消显示指定的编译器警告。注意,在给定元素中取消显示的警告集是所有包含元素中取消显示的警告的超集。例如,如果注释一个类来取消显示某个警告,同时注释一个方法来取消显示另一个警告,那么将在此方法中同时取消显示这两个警告。
6.Override
- @Override这个注解只能注解方法
- @Override这个注解是给编译器参考的,和运行阶段没有关系
- 凡是java中的方法带有这个注解的,编译器都会进行编译检查,如果这个方法不是重写父类的方法,编译器报错
- 这个注解只是在编译阶段起作用,和运行期无关
7.元注解
- 用来标注注解类型的注解叫做元注解
- 常用的元注解
- Target
- 这是一个元注解,用来标注“注解类型”的注解
- 这个Target注解用来标注"被标注的注解“可以出现在哪些位置上
- @Target(ElementType.Method)
- 表示"被标注的注解“只能出现在方法上
- Retention
- 这是一个元注解,用来标注“注解类型”的注解
- 这个Retention注解用来标注"被标注的注解“最终保存到哪
- @Retention(RetentionPolicy.SOURCE)
- 表示该注解只被保存到java源文件中
- @Retention(RetentionPolicy.CLASS):表示该注解被保存在class文件中
- @Retention(RetentionPolicy.RUNTIME):表示该注解被保存到class文件中,并且可以被反射机制锁读取
8.Deprecated
- @Deprecated表示这个被注解的元素已过时
9.注解的属性
- 定义属性:
public @interface MyAnnotation{ String name(); String value(); int age() default 25; }
如果一个注解有属性,你必须给属性赋值,除非该属性使用default指定了默认值
@MyAnnotation(name = "zhangsan","hu")
如果一个注解的属性的名字是value的话,并且只有一个的时候,在使用的时候,该属性名可以省略
注解中属性的类型可以是:
byte
short
int
long
float
double
boolean
char
String
Class
枚举类型
以及以上类型的数组形式
如果数组中是由一个元素,大括号可以省略
boolean isAnnotation()
- 如果此 Class 对象表示一个注释类型则返回 true。注意,如果此方法返回 true,则
isInterface()
也返回 true,因为所有的注释类型同时也是接口 <A extends Annotation> A getAnnotation(Class<A> annotationClass)
- 如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。