Java的注解是从java5添加到Java中的。可以自定义注解,注解的定义方式是
@interface MyAnnotation{
}
1:首先介绍一下元注解:可以用于注解注解的注解是元注解。包含:
@Rentation:可以限制这个注解的存活的时间,包含下面三种属性值:
RentationPolicy.SOURCE:注解仅仅保留在源码的阶段。这个可以用于我们仅仅在代码中做检查的操作,
RentationPolicy.CLASS:注解只是保留在编译阶段,在程序运行的时候不会被加载到JVM当中。但是不能被反射机制读取。这个可以用于在编译的时候进行一些预处理的操作。
RentationPolicy.RUNTIME:注解可以保留到程序运行的时候,它会被加载的到JVM当中。并且可以被反射机制读取。这个可以在运行的时候动态地获取注解的信息。
@Document:被这个注解注解的注解,能够被保留在javadoc中。
@Target:用于指定注解使用的地方,它有下面几种取值:
ElementType.ANNOTATION_TYPE:可以对一个注解进行注解。
ElementType.CONSTRUCTOR:可以给构造方法进行注解。
ElementType.FIELD:可以给属性进行注解。
ElementType.LOCAL_VARIABLE:可以给局部变量进行注解。
ElementType.METHOD:可以对方法进行注解。
ElementType.PACKAGE:可以给一个包进行注解。
ElementType.PARAMETER:可以给一个方法中的参数进行注解。
ElementType.TYPE:可以给一个类型进行注解,比如类、接口、枚举、
@Inherited:被这个注解注解过的注解,在注解父类的时候,如果子类没有被任何注解应用的话那么就会自动继承父类的这个注解。
@Repeatable:jdk8中引入的新属性,被这个注解注解过的注解可以在同一个地方重复使用。
2:注解的属性:类似于普通类的成员方法。当只有value这一个属性的时候,在使用注解的时候可以直接在括号内写值,不需要加属性名。当注解没有属性的时候,使用的时候可以不加括号。
3:java中内置的注解:
@Deprecated:这个元素用来标记已经过时的方法或者类。
@Override:子类要重写父类的方法。
@SuppressWarnings:忽略警告。
@FuncationalInterface:函数式接口。