簡體   English   中英

要求給定類型的所有字段都由某個字段注釋注釋

[英]Require all fields of a given type to be annotated by a certain field annotation

我有一個很好的字段注釋

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Foo {
    // lots of useful, mandatory values here
}

我想創建一個類型注釋

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.CLASS)
public @interface Bar {
    ...
}

這樣任何帶注釋的@Bar類型都會拋出編譯器警告,如果它們包含沒有用@Foo.注釋的@Foo.

換句話說,我希望Bar強制執行一個契約,其中所有@Bar -annotated類'字段都必須@Foo注釋,否則我會從編譯器得到一個很好的警告。

這可能嗎?

謝謝!

沒有注釋使javac直接這樣做。

但是,有些東西叫做“注釋處理器”。 它們作為編譯運行的一部分運行,它們可以生成錯誤和警告。 您可以編寫一個,在任何包含使用@Bar注釋的類型的源文件上觸發,檢查內部的每個字段,如果找不到@Foo注釋,則發出錯誤。

注釋處理器可以處理具有任何保留級別的注釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM