java如何避免注释重复_Java 8中的可重复注释
java如何避免注釋重復
使用Java 8,您可以對聲明或類型重復相同的注釋。 例如,要注冊一個類僅應由特定角色在運行時訪問,則可以編寫如下內容:
@Role("admin") @Role("manager") public class AccountResource { }注意,現在@Role重復了幾次。 出于兼容性原因,重復注釋存儲在容器注釋中,因此,您不僅需要編寫兩個注釋,還需要編寫兩個@Role和@Roles注釋,而不是只編寫一個注釋。
請注意,您需要創建兩個注釋,一個是注釋的“多個”部分,您可以在其中將value方法的返回類型設置為可以多次使用的注釋數組。 另一個注釋可以在定義它的作用域中多次使用,并且必須使用@ Repeatable注釋進行注釋。
自從Java 8允許這樣做以來,我一直都是這樣做的。 但是上周,在一次代碼審查中,我的隊友George Gastaldi向我指出了他們如何在javax.validation規范中實現這些可重復的注釋。 當然,它并沒有完全不同,但是我認為從實現的角度看,這似乎很清楚,因為所有內容都在同一檔案中實現,而且我認為該名稱看起來很自然。
@Repeatable(Role.List.class) @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface Role {String value();@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE})@interface List {Role[] value();} }注意,現在所有內容都放置在同一檔案中。 由于通常只需要引用@Role類,而不是@Roles (現在為@ Role.List )注釋,因此可以將此注釋隱藏為內部注釋。 同樣,在定義多個批注的情況下,這種方法使所有內容看起來都更加緊湊,而不必使用用于相同目的的“重復”類來填充層次結構,而只需創建一個即可。
當然,我并不是說擁有兩個班級的方法是錯誤的,最后是關于偏好的選擇,因為兩者實際上是相似的。 但是,在以這種方式實現可重復注釋之后,我認為這是一種更干凈,更緊湊的解決方案,它在一個類中定義了所有內容。
我們不斷學習,
亞歷克斯
翻譯自: https://www.javacodegeeks.com/2018/02/repeatable-annotations-java-8.html
java如何避免注釋重復
總結
以上是生活随笔為你收集整理的java如何避免注释重复_Java 8中的可重复注释的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑维修大全视频学习资源免费发放,热爱搞
- 下一篇: 无线路由器ip地址怎么设置(无线路由器I