Java 8新特性探究(五)重復注解(repeating annotations)
原文出處: 成熟的毛毛蟲的博客
知識回顧
前面介紹了:
- lambda表達式和默認方法 (JEP 126)
- 批量數據操作(JEP 107)
- 類型注解(JEP 104)
注:JEP=JDK Enhancement-Proposal (JDK 增強建議 ),每個JEP即一個新特性。
在java 8里面,注解一共有2個改進,一個是類型注解,在上篇已經介紹了,本篇將介紹另外一個注解的改進:重復注解(JEP 120)。
什么是重復注解
允許在同一申明類型(類,屬性,或方法)的多次使用同一個注解
一個簡單的例子
java 8之前也有重復使用注解的解決方案,但可讀性不是很好,比如下面的代碼:
public @interface Authority { String role(); } public @interface Authorities { Authority[] value(); } public class RepeatAnnotationUseOldVersion { @Authorities({@Authority(role="Admin"),@Authority(role="Manager")}) public void doSomeThing(){ } }
由另一個注解來存儲重復注解,在使用時候,用存儲注解Authorities來擴展重復注解,我們再來看看java 8里面的做法:
@Repeatable(Authorities.class) public @interface Authority { String role(); } public @interface Authorities { Authority[] value(); } public class RepeatAnnotationUseNewVersion { @Authority(role="Admin") @Authority(role="Manager") public void doSomeThing(){ } }
不同的地方是,創建重復注解Authority時,加上@Repeatable,指向存儲注解Authorities,在使用時候,直接可以重復使用Authority注解。從上面例子看出,java 8里面做法更適合常規的思維,可讀性強一點
總結
JEP120沒有太多內容,是一個小特性,僅僅是為了提高代碼可讀性。這次java 8對注解做了2個方面的改進(JEP 104,JEP120),相信注解會比以前使用得更加頻繁了。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!