注释类型
注释类型简介
JSE 提供了很多新的特性其中的一个很重要的特性就是对元数据(Metadata)的支持在JSE中这种元数据叫作注释(Annotation)通过使用注释 程序开发人员可以在不改变原有逻辑的情况下在源文件嵌入一些补充的信息
代码分析工具开发工具和部署工具可以通过这些补充信息进行验证或者进行部署举个例子比如说你希望某个方法的参数或者返回值不为空虽然我们可以在Java doc中说明但是表达同样意思的说法有很多比如The return value should not be null或者null is not allowed here
测试工具很难根据这些语言来分析出程序员所期望的前提条件(Precondition)和执行后的条件(Postcondition) 而使用注释(Annotation)这个问题就可以轻而易举的解决了
定义注释
JSE支持用户自己定义注释定义注释很简单注释是由@Interface关键字来声明的比如下面是一个最简单的注释(Annotation)
清单一个最简单的注释
public @interface TODO{}
除了定义清单中的注释以外我们还可以在注释(Annotation)中加入域定义方法很简单不需定义Getter和Setter方法而只需一个简单的方法比如
清单 为注释加入域>
public @interface TODO{
String priority();
}
定义了这个注释之后我们在程序中引用就可以使用这个注释了
清单 使用自定义的注释
@TODO(
priority=high
)
public void calculate(){
//body omission
}
由于TODO中只定义了一个域使用TODO的时候可以简写为
清单 单域注释的简写
@TODO(high)
类似的你可以在你的注释(Annotation)类型中定义多个域也可以为每个域定义缺省值比如
清单定义缺省值
public @interface TODO{
String priority();
String owner();
boolean testable() default true;
}
如果定义了缺省值在使用的时候可以不用再赋值比如
清单使用定义了缺省值的注释
@TODO(
priority=high
owner=Catherine
)
public void calculate(){
//body omission
}
在这个例子中testable用缺省值true和上文一样我们使用Eclipse 作为集成的编译运行环境Eclipse 提供了向导帮助用户来定义注释
.首先我们创建一个Plugin 项目comcatherinelabannotationdemo在Package Explorer中选中包package comcatherinelabannotationdemo
点击New>Other>Java>Annotation弹出了下面的对话框输入注释的名称在这里例子中输入TODO 点击Finish 图中的注释就生成了
educitycn/img_///jpg >图 创建注释向导 educitycn/img_///jpg>图 注释向导生成的代码