首頁 > Java > java教程 > 主體

Java 註解可以在執行時期接受動態產生的值嗎?

DDD
發布: 2024-10-28 14:42:30
原創
406 人瀏覽過

 Can Java Annotations Accept Dynamically Generated Values at Runtime?

在運行時評估註釋

在 Java 中,註釋對於向編譯器或運行時系統提供元資料非常有用。然而,一個持續存在的問題是註釋是否可以接受在運行時動態產生的值。

下面的嘗試嘗試為@MyInterface 的aString 屬性產生字串值:

<code class="java">@MyInterface(aString = MyClass.GENERIC_GENERATED_NAME)
public class MyClass {

    static final String GENERIC_GENERATED_NAME = MyClass.generateName(MyClass.class);

    public static final String generateName(final Class<?> c) {
        return c.getClass().getName();
    }
}</code>
登入後複製

但是,編譯器將拒絕此操作並顯示錯誤訊息:

The value for annotation attribute MyInterface.aString must be a constant expression
登入後複製

這是因為註解是在編譯時評估的,但直到執行時才知道GENERIC_GENERATED_NAME。

為了達到預期的效果,它有必要建立一個可以在編譯時評估generateName方法的註解處理器。然而,這個解決方案有局限性,因為 Java 不支援在運行時動態評估程式碼。

以上是Java 註解可以在執行時期接受動態產生的值嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!