原文地址:http://www.c2.com/cgi/wiki?AnnotationsOverTagInterfaces
本文主要介绍:使用注解代替以前的标签接口:
批注:标签接口是指,没有任何方法,只是用于区域特别的类的空接口.
在java1.5之前,常用标签接口标记一个类,如同给类增加一些属性,也就是接口被像元数据一样被使用.
Java Annotations提供了更广泛的用途在使用Metadata,对程序员更加有用.
首先,特别注意annotations使用时不同的限制,比如注解 @Retention 用于标注在其他的注解之上,使用一个枚举做为参数.
你可以这么定义:
上面的意思为,这个注解数据将在runtime(运行时)保存,允许程序员使用反射找出该注解.从Java 1.5开始//略...
第二种不同的注解能够注解脱离只能使用在class标签之上的约束,@Target
该注解将只能在方法上使用(@Target注解带有一组的枚举类型,但在Java 1.5中提供了一些语法糖进行了隐藏)
一个在单元测试框架上使用两个注解的例子,在JavaUnit方法中,使用test注解去运行测试,当时有一些难看.使用的方式如下
首先需要创建一个@Test注解
然后我们标注我们的测试方法
最后,我们使用反射获取我们的测试方法
一些使用注解标签的好处
1:注解明白的表达了意图,适用于代替其他语言特性去修改元数据
2:注解能够使用在很多类型上
3:注解能被参数化使用
一些缺点
1:注解只能在Java1.5上使用
2:定义一个注解比只定义一个空接口需要更多的工作
本文主要介绍:使用注解代替以前的标签接口:
批注:标签接口是指,没有任何方法,只是用于区域特别的类的空接口.
在java1.5之前,常用标签接口标记一个类,如同给类增加一些属性,也就是接口被像元数据一样被使用.
Java Annotations提供了更广泛的用途在使用Metadata,对程序员更加有用.
首先,特别注意annotations使用时不同的限制,比如注解 @Retention 用于标注在其他的注解之上,使用一个枚举做为参数.
你可以这么定义:
@Retention(RetentionPolicy.RUNTIME)
上面的意思为,这个注解数据将在runtime(运行时)保存,允许程序员使用反射找出该注解.从Java 1.5开始//略...
第二种不同的注解能够注解脱离只能使用在class标签之上的约束,@Target
@Target(ElementType.METHOD)
该注解将只能在方法上使用(@Target注解带有一组的枚举类型,但在Java 1.5中提供了一些语法糖进行了隐藏)
一个在单元测试框架上使用两个注解的例子,在JavaUnit方法中,使用test注解去运行测试,当时有一些难看.使用的方式如下
首先需要创建一个@Test注解
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Test {}
然后我们标注我们的测试方法
public class MyTests {
@Test
void myTest() {
}
}
最后,我们使用反射获取我们的测试方法
public class TestRunner {
public static void runTests(Class c) throws Exception {
Object instance = c.newInstance();
for (Method m: c.getMethods()) {
if (m.getAnnotation(Test.class) != null) {
m.invoke(instance, new Object[]{});
}
}
}
}
一些使用注解标签的好处
1:注解明白的表达了意图,适用于代替其他语言特性去修改元数据
2:注解能够使用在很多类型上
3:注解能被参数化使用
一些缺点
1:注解只能在Java1.5上使用
2:定义一个注解比只定义一个空接口需要更多的工作