Tiger 中的注释,第 2 部分: 定制注释
2009-11-11 00:00:00 来源:WEB开发网清单 9 中的枚举值意义很明确,您自己可以分析其应用的目标(通过后面的注解)。使用 Target 元注释时,至少要提供这些枚举值中的一个并指出注释的注释可以应用的程序元素。清单 10 说明了 Target 的用法:
清单 10. 使用 Target 元注释 package com.oreilly.tiger.ch06;
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
/**
* Annotation type to indicate a task still needs to be completed
*/
@Target({ElementType.TYPE,
ElementType.METHOD,
ElementType.CONSTRUCTOR,
ElementType.ANNOTATION_TYPE})
public @interface TODO {
String value();
}
现在,Java 编译器将把 TODO 应用于类型、方法、构造函数和其他注释类型。这样有助于避免他人误用您的注释类型(或者最好的地方是, 您自己也不会因为疲惫而误用它)。
设置保持性
下一个要用到的元注释是 Retention 。这个元注释和 Java 编译器处理注释的注释类型的方式有关。编译器有几种不同选择:
将注释保留在编译后的类文件中,并在第一次加载类时读取它。
将注释保留在编译后的类文件中,但是在运行时忽略它。
按照规定使用注释,但是并不将它保留到编译后的类文件中。
这三种选项用 java.lang.annotation.RetentionPolicy 枚举表示,如清单 11 所示:
清单 11. RetentionPolicy 枚举 package java.lang.annotation;
public enum RetentionPolicy {
SOURCE, // Annotation is discarded by the compiler
CLASS, // Annotation is stored in the class file, but ignored by the VM
RUNTIME // Annotation is stored in the class file and read by the VM
}
更多精彩
赞助商链接