Java 8新特性探究(五)重複註解(repeating annotations)

知識回顧

前面介紹了:
lambda表達式和默認方法 (JEP 126)
批量數據操做(JEP 107)
類型註解(JEP 104)
注:JEP=JDK Enhancement-Proposal (JDK 加強建議 ),每一個JEP即一個新特性。

在java 8裏面,註解一共有2個改進,一個是類型註解,在上篇已經介紹了,本篇將介紹另一個註解的改進:重複註解(JEP 120)。
java

什麼是重複註解

容許在同一申明類型(類,屬性,或方法)的屢次使用同一個註解 spa

一個簡單的例子

java 8以前也有重複使用註解的解決方案,但可讀性不是很好,好比下面的代碼: .net

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裏面的作法: code

@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裏面作法更適合常規的思惟,可讀性強一點 orm

總結

JEP120沒有太多內容,是一個小特性,僅僅是爲了提升代碼可讀性。此次java 8對註解作了2個方面的改進(JEP 104,JEP120),相信註解會比之前使用得更加頻繁了。 it

轉載時候請註明出處。 http://my.oschina.net/benhaile  io

相關文章
相關標籤/搜索