Annotations Over Tag Interfaces 使用注解代替标志接口

原文地址:http://www.c2.com/cgi/wiki?AnnotationsOverTagInterfaces

本文主要介绍:使用注解代替以前的标签接口:
批注:标签接口是指,没有任何方法,只是用于区域特别的类的空接口.

在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:定义一个注解比只定义一个空接口需要更多的工作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值