注解为我们在开发过程中,将元数据与源代码文件结合在一起,而不需要在外部文档中进行额外的设置。例如配置信息、接口文件、XML文件等。它使得代码更加干净易读,并且拥有编译期的类型检查,减轻了编写样板代码的负担。
定义注解
@Target(ElementType.METHOD) //注解应用于什么地方(方法、域)
@Retention(RetentionPolicy.RUNTIME) //注解在什么级别可用(源代码、类文件、运行时)
public @interface UseCase{
int num();
String m();
String n() default "hello"; //默认值
String p() default "year";
}
将方法注解为用例
public class Utils{
@UseCase(
num = 100,
m = "java test",
n = "hello world!",
p = "Year 2011"
)
public static void CaseMethod1(String describe) { ... }
@UseCase(
num = 101,
m = "java test2",
n = "hello world!2",
p = "Year 2012"
)
public static void CaseMethod2(String describe) { ... }
@UseCase(
num = 102,
m = "java test3",
n = "hello world!3",
p = "Year 2013"
)
public static void CaseMethod3(String describe) { ... }
}
注解的元素在使用时表现为名——值对的形式,并需要至于@UseCase声明的括号内。
注解处理器
import java.lang.reflect.*;
public class Test {
public static void main(String[] args) throws Exception {
Class cl = Utils.class;
for (Method m : cl.getDeclaredMethods()) {
UseCase uc = m.getAnnotation(UseCase.class);
if(uc != null){
System.out.println("num = " + uc.num() + " m = " + uc.m());
UseCase.remove(new Integer(uc.num()));
}
}
}
}