注解(也称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据。
在java SE5中内置了三种定义在java.lang中的注解:
@Override:表示当前的定义方法定义将覆盖超类中的方法。
@Deprecated:它对编译器说明某个方法已经不建议使用,如果程序员试图使用或重新定义该方法,必须提出警示讯息。
@SuppressWarnings,关闭不当的编译器警告。
四种元注解:
1.@Target:表示该注解可以用于什么地方。ElementType参数包括:CONSTRUCTOR:构造器的声明;
FIELD:域声明(包括enum实例);LOCAL_VARIABLE:局部变量声明;METHOD:方法声明;PACKAGE:包声明;
PARAMETER:参数声明;TYPE:类,接口(包括注解类型)或enum声明。
2.@Retention:表示需要什么级别保存该注解信息,RetentionPolicy参数包括:SOURCE:注解将被编译器丢弃,CLASS:注解在class文件中可用,但会被jvm丢弃;
RUNTIME:jvm将在运行期保留注解,因此可以通过反射机制读取注解信息。什么是反射机制:
反射:JAVA反射机制是在运行状态(即类加载器加载.class文件后)中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
3.@Documented:将此注解包含在Javadoc中。
4.@Inherited:允许子类继承父类的注解。
没有元素的注解称为标记注解,注解元素要么有默认值,要么使用注解元素时提供元素的值,若要表示一个元素不存在,可以将这些元素的值定义为负数或空字符串。注解是可以嵌套的,注解是不可以继承的。
基于注解的单元测试
单元测试:是对类中的每个方法提供一个或多个测试的一种实践,其目的是为了有规律地测试一个类的各部分是否具备正确的行为。基于注解的框架是@Unit。
正是因为java SE5中引入了注解,才会有JUnit4的实现。