您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何在Java8中使用重復注解功能,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
在Java 8以前,同一個程序元素前最多只能使用一個相同類型的Annotation;如果需要在同一個元素前使用多個相同類型的Annotation,則必須使用Annotation“容器”。
為了將該注解改造成重復注解,需要使用@Repeatable修飾該注解,使用@Repeatable時必須為value成員變量指定值。
二 實戰
1 定義重復注解
import java.lang.annotation.*; // 指定該注解信息會保留到運行時 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Repeatable(FkTags.class) public @interface FkTag { // 為該注解定義2個成員變量 String name() default "瘋狂軟件"; int age(); }
2 定義重復注解容器
import java.lang.annotation.*; // 指定該注解信息會保留到運行時 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface FkTags { // 定義value成員變量,該成員變量可接受多個@FkTag注解 FkTag[] value(); }
3 測試
@FkTag(age=5) @FkTag(name="瘋狂Java" , age=9) //@FkTags({@FkTag(age=5), // @FkTag(name="瘋狂Java" , age=9)}) public class FkTagTest { public static void main(String[] args) { Class<FkTagTest> clazz = FkTagTest.class; /* 使用Java 8新增的getDeclaredAnnotationsByType()方法獲取 修飾FkTagTest類的多個@FkTag注解 */ FkTag[] tags = clazz.getDeclaredAnnotationsByType(FkTag.class); // 遍歷修飾FkTagTest類的多個@FkTag注解 for(FkTag tag : tags) { System.out.println(tag.name() + "-->" + tag.age()); } /* 使用傳統的getDeclaredAnnotation()方法獲取 修飾FkTagTest類的@FkTags注解 */ FkTags container = clazz.getDeclaredAnnotation(FkTags.class); System.out.println(container); } }
三 運行
瘋狂軟件-->5
瘋狂Java-->9
@FkTags(value=[@FkTag(name=瘋狂軟件, age=5), @FkTag(name=瘋狂Java, age=9)])
看完上述內容,你們對如何在Java8中使用重復注解功能有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。