1. 程式人生 > 程式設計 >Java8新增的重複註解功能示例

Java8新增的重複註解功能示例

本文例項講述了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)])

更多java相關內容感興趣的讀者可檢視本站專題:《Java面向物件程式設計入門與進階教程》、《Java資料結構與演算法教程》、《Java操作DOM節點技巧總結》、《Java檔案與目錄操作技巧彙總》和《Java快取操作技巧彙總》

希望本文所述對大家java程式設計有所幫助。