Java8新增的重复注解功能示例
本文实例讲述了Java8新增的重复注解功能。分享给大家供大家参考,具体如下:
一点睛
在Java8以前,同一个程序元素前最多只能使用一个相同类型的Annotation;如果需要在同一个元素前使用多个相同类型的Annotation,则必须使用Annotation“容器”。
为了将该注解改造成重复注解,需要使用@Repeatable修饰该注解,使用@Repeatable时必须为value成员变量指定值。
二实战
1定义重复注解
importjava.lang.annotation.*; //指定该注解信息会保留到运行时 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Repeatable(FkTags.class) public@interfaceFkTag { //为该注解定义2个成员变量 Stringname()default"疯狂软件"; intage(); }
2定义重复注解容器
importjava.lang.annotation.*; //指定该注解信息会保留到运行时 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public@interfaceFkTags { //定义value成员变量,该成员变量可接受多个@FkTag注解 FkTag[]value(); }
3测试
@FkTag(age=5) @FkTag(name="疯狂Java",age=9) //@FkTags({@FkTag(age=5), //@FkTag(name="疯狂Java",age=9)}) publicclassFkTagTest { publicstaticvoidmain(String[]args) { Classclazz=FkTagTest.class; /*使用Java8新增的getDeclaredAnnotationsByType()方法获取 修饰FkTagTest类的多个@FkTag注解*/ FkTag[]tags=clazz.getDeclaredAnnotationsByType(FkTag.class); //遍历修饰FkTagTest类的多个@FkTag注解 for(FkTagtag:tags) { System.out.println(tag.name()+"-->"+tag.age()); } /*使用传统的getDeclaredAnnotation()方法获取 修饰FkTagTest类的@FkTags注解*/ FkTagscontainer=clazz.getDeclaredAnnotation(FkTags.class); System.out.println(container); } }
三运行
疯狂软件-->5
疯狂Java-->9
@FkTags(value=[@FkTag(name=疯狂软件,age=5),@FkTag(name=疯狂Java,age=9)])
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。