簡體   English   中英

如何在Java中指定應將注釋應用於的字段類型?

[英]How can I specify the type of the field that an Annotation should be applied to in Java?

我正在創建一個簡單的注釋,以幫助我在Android應用程序中擴大設置。 注釋是這樣的:

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface CoreSettings {
    String name() default "";
}

我想確保它將僅在類型擴展了名為BaseSettings的自定義類的字段中使用。 在下面的示例中,MainSettings擴展了抽象類BaseSettings。

public class MainActivity extends BaseActivity {

    @CoreSettings("prefs")
    MainSettings settings;


    (...)

}

我該怎么做?

是的,如果您在錯誤類型的字段上編寫注釋,則可能導致編譯器發出錯誤消息。

您不能僅使用@Target元注釋來執行此操作。 另外,您需要編寫注釋處理器。 注釋處理器將檢查源代碼中注釋@CoreSettings每次出現,如果@CoreSettings應用於不擴展BaseSettings的類型,則注釋處理器將發出錯誤(就像其他編譯器錯誤一樣)。 這是一個簡短的簡單注釋處理器。

您僅在運行注釋處理器時會收到編譯時警告,但可以在項目的構建文件中將-processor ...命令行參數添加到javac。

暫無
暫無

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

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