欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java8新增的重復(fù)注解功能示例

 更新時間:2019年10月22日 08:42:33   作者:cakincqm  
這篇文章主要介紹了Java8新增的重復(fù)注解功能,結(jié)合實例形式分析了java8重復(fù)注解的功能、定義、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下

本文實例講述了Java8新增的重復(fù)注解功能。分享給大家供大家參考,具體如下:

一 點睛

在Java 8以前,同一個程序元素前最多只能使用一個相同類型的Annotation;如果需要在同一個元素前使用多個相同類型的Annotation,則必須使用Annotation“容器”。

為了將該注解改造成重復(fù)注解,需要使用@Repeatable修飾該注解,使用@Repeatable時必須為value成員變量指定值。

二 實戰(zhàn)

1 定義重復(fù)注解

import java.lang.annotation.*;
// 指定該注解信息會保留到運行時
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Repeatable(FkTags.class)
public @interface FkTag
{
  // 為該注解定義2個成員變量
  String name() default "瘋狂軟件";
  int age();
}

2 定義重復(fù)注解容器

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());
   }
   /* 使用傳統(tǒng)的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相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計入門與進階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計有所幫助。

相關(guān)文章

最新評論