注解是JDK1.5才添加的功能,它是代码中的一种特殊的标记,可以再编译时,类加载,运行时被读取,并进行处理.
注解可以为程序设置元素据,修饰类,方法,成员变量,包等
使用注解,先要为注解编写配套的工具.
一.基本注解
(1)@Override
用于修饰方法,指定下面的方法必须覆盖父类的方法
(2)@Deprecated
用于修饰方法,指定下面的方法已经过时,通常会附上替代的方法,当其他位置调用该方法时,编译器给出警告.
(3)@SuppressWarnings
用于修饰程序元素(和所有子元素).功能是压制编译器警告.
(4)@SafeVarargs
1.7新增的注解.专门抑制程序中的”堆污染”.
(5)@FunctionalInterface
Java8中新增的注解.用于声明函数式接口.规定 : 当接口只包含一个抽象方法时(可以有默认方法和静态方法),该接口就是函数式接口.可以用该注解修饰函数式接口.
二.元注解
用于修饰注解的注解就是元注解
(1)@Retention
限定注解能保留到哪个层次.一共可以设定三个层次:
CLASS(class文件级),RUNTIME(运行级),SOURCE(源码级).
(2)@Target
限定注解用于修饰哪些程序元素;程序元素标识:ElementType.XXXXX
包括:修饰注解,修饰构造方法,修饰成员变量,修饰局部变量,修饰方法,修饰包,修饰参数,修饰类接口和枚举.
(3)@Documented
指定注解能否被javadoc提取成文档.被@Documented修饰的注解会被包含在API文档中
(4)@Inherited
指定注解具有继承性,如果一个Annotation B被@Inherited修饰过,使用该注解修饰一个类,那么该类的子类将自动被B修饰.
三.自定义注解
使用@interface修饰,如下定义一个Name注解 :
public @interface Name{ }
注解默认可以修饰任何程序元素.
用元注解修饰自定义注解 ,下面定义了一个保留到运行时,修饰方法的注解:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Length{ }
如何获取注解
通过反射获取注解元素对象之后(Class,Method,Field,Constructor),就可以调用方法获取在其上修饰的注解了.
例如 :
Annotation[] anno=Class.forName(“MyClass”).getMethod(“methodName”).getAnnotations();
上述语句表示获取类MyClass中的方法methodName上的所有注解.