概论
-
注解,或者叫注释,英文单词是:Annotation
-
注解Annotation是一种引用数据类型.编译之后也是生成xxx.clsaa文件
-
怎么自定义注解呢?语法格式?
[修饰符列表] @interface 注解类型名{
}
-
注解怎么使用,用在什么地方?
-
注解使用时的语法格式是: @注解类型名
-
注解可以出现在类上、属性上、方法上变量上等。。。
注解还可以出现在注解类型上
-
-
JDK内置了哪些注解呢?
lang包下的
掌握:
Deprecated 用 @Deprecated 注释的程序元素,
不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。掌握:
Override 表示一个方法声明打算重写超类中的另一个方法声明。不用掌握:
SuppressWarnings 指示应该在注释元素(以及包含在该注释元素中的
所有程序元素)中取消显示指定的编译器警告。
Override
标示性注解,给编译器作参考的,编译器看到这个方法上有注解的时候,编译器会自动检查该方法是否重写了父类的方法
这个注解只是在编译时起作用,与运行时无关
Override这个注解只能注解方法
Override这个注解是给编译器参考的,和运行阶段没有关系.
凡是java中的方法带有这个注解的,编译器都会进行编译检查,如果这个方法不是重写父类方法,编译器报错
- 元注解:用来标注注解类型的注解,称为元注解
- 常见的元注解有哪些? Target Retention
Target注解
这是一个元注解,用来标注"注解类型"的"注解",这个Target注解用来标注"被标注的注解"可以出现在哪些位置上
@Target(ElementType.METHOD) :表示"被标注的注解"只能出现在方法上
Retention注解
源代码
//元注解
public @interface Retention {
//属性
RetentionPolicy value();
}
这是一个元注解,用来标注"注解类型"的"注解"
这个Retention注解用来标注"被标注的注解"最终保存在哪里.
Retention(RetentionPolicy.SOURCE):表示该注解只被保留在java源文件中
Retention(RetentionPolicy.CLASS):表示该注解被保存在class文件中
Retention(RetentionPolicy.RUNTIME):表示该注解被保存在class文件中,并且能被反射机制读取到
Deprecated注解
Deprecated这个注解标注的元素已过时
这个注解主要是向其他程序员穿第一个信息,告知已过时,有更好地解决方案存在
@Target(ElementType.METHOD):表示“被标注的注解”只能出现在方法上。@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, MODULE, PARAMETER, TYPE})
表示该注解可以出现在:
构造方法上
字段上
局部变量上
方法上
…
类上…
注解中的属性
如果一个注解当中有属性,那么必须给属性赋值,(除非该属性使用default设定了默认值)
public @interface AnnotationTest02 {
String name(); //注解中的属性,看起来像方法
int i() default 0; //设置默认值,就可以不赋值了
}
@AnnotationTest02(name="张三")
public void dosome(){
}
如果一个注解的属性的名字是value的话,并且只有一个属性,在使用的时候,该属性名可以省略
注解中的属性可以使哪一种类型?
八个基本数据类型+String+Class +枚举类型以及以上每一种数组形式