注解是那些插入到源代码中使用其他工具可以对其进行处理的标签。这些工具可以在源码层次上进行操作,或者可以处理编译器在其中放置了注解的类文件。
注解不会改变程序的编译方式。Java编译器对于包含注解和不包含注解的代码会生成相同的虚拟机指令。
注解是由注解接口来定义的。注解中若是包含元素,在使用的时候要对其中的元素进行赋值,如果i不赋值则使用默认值。(元素的顺序无关紧要)
如果没有指定元素,要么是因为注解中没有任何元素,要么是因为所有元素都使用默认值,那么就不需要使用圆括号了。这样的注解叫做标记注解。
单值注解:如果一个元素具有特殊的名字value,并且没有指定其他元素,那么你就可以忽略掉这个元素名以及等号。
所有的注解接口都隐式地扩展自java.lang.annotation.Annotation接口。这个接口是一个常规接口,不是一个注解接口。
注解接口中的元素声明实际上是方法的声明。一个注解接口的方法不能有任何参数和任何throws语句,并且它们也不能是泛型。注解元素的类型为下列之一:基本类型(int、short、long、byte,char,double,float,boolean);String;class;enum类型;注解类型;由前面所述类型组成的数组。
一项可以具有多个注解,只要它们属于不同的类型即可。
元注解:@Target:可以应用于一个注解,以限制该注解可以应用到哪些项上。
@Retention元注解用于指定一条-注解应该保留多长时间。
@Document元注解为像Javadoc这样的归档工具提供了一些提示。
@Inherited元注解只能应用于对类的注解。如果一个类具有继承注解,那么它的所有子类都具有同样的注解。