一、注解
注解是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过使用Annotation,程序员可以在不改变原有的逻辑下,在源文件中嵌入一些补充信息,代码分析工具,开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。
二、JDK内置的三个注解
@Override:限定重写父类的方法,该注解只能用于方法
@Deprecated:用于表示所修饰的元素已过时,通过是因为所修饰的结构危险或存在更好的选择
@SuppessWarnings:抑制编译器警告
@SuppressWarnings(“unused”)
//如果num没有被引用
int num=10;
三、自定义注解
1).新建类时,如上图所示,加入注解
2).直接声明注解
public @interface myAnnotation {
// 注解声明为
String value() default "hello";
}
3)在此声明中可以使用默认值,这样在类中就可以直接用了,不用在赋value值,如果类中要修改默认值,则可以进行value的再次赋值,即如果注解有成员,在使用注解时,需要指明成员的值
@myAnnotation(value="hi")
class Person{}
4).如果自定义的注解没有成员,表明是一个标识作用
public interface Serializable {
}
自定义注解的注意点:
1).自定义注解必须配上注解的信息处理流程即反射才可以使用
2).自定义注解通常会指明两个元注解,Retention和Target
四、JDK提供了四种元注解meta-annotation
元Annotation:用于修饰其他的Annotation定义
1)Retention:指定所修饰的Annotation的生命周期
2)Target:用于指明修饰的字节能够修饰哪些程序元素。
@Retention(RetentionPolicy.RUNTIME)
@Target({FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE})
public @interface myAnnotation {
// 注解声明为
String value() default "hello";
}
3)Document:表示所修饰的注解被javadoc解析时,保留下来
4)Inherited:被它修饰的Annotation将具有继承性,在使用时用在类上,可以被子类所继承,对属性或方法无效