- 注解
- 特殊注释,给编译器和jvm读取,让编译器为我们做检查
- 属性,修饰符,可以修饰方法,类,属性,等,具体的看注解的修饰范围限定
- 内置注解
- @Override 告诉编译器做检测,它所修饰的方法是否满足方法覆盖的条件,标记性注解
- @deprecated 提醒使用者,它修饰的目标将要被删除,在这里不建议使用(过时了),可以修饰类,属性,构造器,方法,形参,局部变量,标记性注解
- @SuppressWarnings({"unused", "null"}),抑制警告,需要传参表明那种类型的警告
- 自定义注解
- @interface MyAnnotation{}
- @interface MyAnnotation{ public String name(); public age();}属性
- @interface MyAnnotation{public String name(); default "某名字"}
- 可以写注解的注解(原注解)
- Target(),原注解,规定注解使用范围,即注解的注解
- TYPE 可以修饰类
- FIELD 可以修饰属性
- METHOD 可以修饰方法
- CONSTRUCTOR 可以修饰构造器
- Retention() 作用是约束注解的停留期
- SOURCE 只能停留在源码中,生成class中没有
- CLASS 可以停留在class文件,但运行时不能反射
- RetentionPolicy.RUNTIME,可以停留在运行时并运行处理
//自定义注解举例
//自定义注解,没有规定其使用范围,没有规定其声明周期
@interface HelloAnnotation{
}
@HelloAnnotation
public class Student {
@HelloAnnotation
private String name;
@HelloAnnotation
public Student(String name) {
//@HelloAnnotation
super();
//@HelloAnnotation
this.name = name;
}
@HelloAnnotation
public void hello() {
//@HelloAnnotation
System.out.println("hello!");
}
}