br/>}
@Retention中有source,runtime,class三个值,这三个值只能选择其中一个,不能选择多个。
@Target中有type表示类级别的注解,field表示字段级别的注解,method表示方法级别的注解,parameter表示参数级别的注解。除了这几种常用的外,还有:package,constructor,local_variable,annotation_type,type_parameter,type_use等等。
在注解中,使用default来设置默认值。使用注解:
Class cla = MainBodyCon.class;
TestAbcAnno ano = (TestAbcAnno) cla.getAnnotation(TestAbcAnno.class);获取类的注解
System.out.println(ano.name());
Field fie = cla.getDeclaredField("test");
TestAbcAnno f = fie.getAnnotation(TestAbcAnno.class); 获取字段的注解
System.out.println(f.name());
Method method = cla.getMethod("nameP", String.class);
TestAbcAnno m = method.getAnnotation(TestAbcAnno.class);获取方法的注解
System.out.println(m.name());
Parameter[] para = method.getParameters();
TestAbcAnno par = para[0].getAnnotation(TestAbcAnno.class);获取参数的注解
System.out.println(par.name());
对于枚举来说,就相对于简单了,枚举是对于某个事物有多种状态,使用枚举来列出来,使用时直接调用就可以了,不用亲手写出来,减少了重复写发生的错误,同时也将修改变得简单了和减少错误。
代码:
public enum StatusEnum {
one(1),two(2),three(3);
private int value;
private StatusEnum(int value) {
this.value = value;
}
public int value() {
return this.value;
}
}
枚举类中,结构方法必须是private类型的,如果是public是不行的。one(1), two(2), three(3);表示是各种枚举,括号中的值是各种枚举的值,枚举的调用:
StatusEnum.one.value();
StatusEnum.two.value();
StatusEnum.three.value();
注解与枚举
原文:http://blog.51cto.com/xiaoshunzi/2351279