一个稍微复杂的示例
有一个注释类型如下:
public @interface ComplexAnnotation {
public enum Sex{男, 女};
public String[] love();//爱好
public Sex sex() default Sex.女;//性别
public String name();//姓名
public int age();//年龄
}
问题:
请将该注释类型补充完整。
将该注释类型注释某一个类,赋值后将值读取出来并打印在Console,参考结果如下:
李赞红
25
男
游泳 爬山
import java.lang.annotation.Annotation;
@AnnotationDmo(Loves ={"爬山","游泳"} ,
sex= AnnotationDmo.Sex.男,
age = 25,name="李赞红")
public class App {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Class cl=App.class;
AnnotationDmo[] ann=(AnnotationDmo[])cl.getAnnotations();
for(AnnotationDmo a:ann){
if(a instanceof AnnotationDmo){
AnnotationDmo an =(AnnotationDmo)a;
System.out.println(an.name());
System.out.println(an.age());
System.out.println(an.sex());
System.out.println(an.sex());String Loves= "";
for(String s : an.Loves()){
Loves += s + " ";
}
System.out.println(Loves);
}
}
}
}
思考:
注释类型中的成员可以有返回值,通过default关键字定义。
成员返回值类型不可以为java.util.Date或包装类等类型,可以是String或基本数据类型。
成员返回值类型可以是枚举类型。注意枚举类型的定义方法和访问方法。
访问方法:ComplexAnnotation.Sex.男