Java8新增的重復(fù)注解功能示例
本文實例講述了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)文章
java中進制的轉(zhuǎn)換,Byte與16進制的轉(zhuǎn)換方法
下面小編就為大家?guī)硪黄猨ava中進制的轉(zhuǎn)換,Byte與16進制的轉(zhuǎn)換方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11
解讀file.exists(),file.isFile()和file.isDirectory()的區(qū)別
本文介紹了Java中的File類的三個方法:file.exists()、file.isFile()和file.isDirectory(),并詳細解釋了它們的區(qū)別和使用場景2025-02-02
Spring MVC實現(xiàn)mysql數(shù)據(jù)庫增刪改查完整實例
這篇文章主要介紹了Spring MVC實現(xiàn)mysql數(shù)據(jù)庫增刪改查完整實例,從創(chuàng)建一個web項目開始,分享了項目結(jié)構(gòu)以及具體Java代碼和前端頁面等相關(guān)內(nèi)容,具有一定借鑒價值,需要的朋友可以了解下。2017-12-12
Java 實戰(zhàn)練習(xí)之網(wǎng)上電商項目的實現(xiàn)
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+vue+Springboot+ssm+mysql+maven+redis實現(xiàn)一個網(wǎng)上電商項目,大家可以在過程中查缺補漏,提升水平2021-11-11
MyBatis-Plus:saveOrUpdate根據(jù)指定字段更新或插入方式
這篇文章主要介紹了MyBatis-Plus:saveOrUpdate根據(jù)指定字段更新或插入方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04
Spring Boot 自定義數(shù)據(jù)源DruidDataSource代碼
這篇文章主要介紹了Spring Boot 自定義數(shù)據(jù)源DruidDataSource代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-10-10

