1.注解的定义
可以被程序识别的注释,可以添加在package、class、method、field等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问
格式:@注释名,以及可以添加一些参数值
例如:@Override,重写的注解
2.注解类型
2.1 内置注解
2.1.1 @Override
重写的注解
2.1.2 @Deprecated
不推荐使用的注解,是可以使用的,但存在更好的方式
2.1.3 @SuppressWarnings
镇压编译器的警告
例如:@SuppressWarnings("all")用于抑制所有的警告、@SuppressWarnings("unchecked") 用于抑制未检查的警告
2.2 元注解
负责注解其他的注解
2.2.1 @Target
@Target(value = {ElementType.METHOD,ElementType.TYPE})
Target表示我们的注解可以用在哪些地方
2.2.2 @Retention
@Retention(value = RetentionPolicy.RUNTIME)
表示我们的注解在什么地方还有效
runtime>class>sources,在runtime下有效的话在class和sources下肯定也有效
2.2.3 @Documented
@Documented
表示是否将我们的注解生成在JavaDoc中
2.2.4 @Inherited
@Inherited
子类可以继承父类的注解
2.3 自定义注解
使用@interface自定义注解,自动继承java.lang.annotation.Annotation接口
样例
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
public class Test03 {
@MyAnnotation1(id = 2,schools = {"THU","PKU"})
public void test(){
}
@MyAnnotation2("mouweng")
public void test2(){
}
}
@Target(value = {ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation1{
String name() default "";
int age() default 0;
int id() default -1;
String[] schools() default {"ZJU","HQU"};
}
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation2{
String value();
}