簡體   English   中英

在Java中,是否可以在運行時使用反射將成員變量添加到類中?

[英]In Java is it possible to add a member variable to a class using reflection at run time?

我看到了一些Java示例,這些示例在運行時使用反射從類外部更改成員變量的值。 可以針對私有領域,甚至最終領域。 也許有一種方法可以在運行時使用反射將字段添加到類中?

我發現了一個非常類似的問題: Java類可以在運行時為其自身添加方法嗎?

答案是肯定的,可以使用自定義類加載器或字節碼操作工具。

據我所知,答案是否定的。 反射應該反映數據而不是修改數據。

這是不可能的,實際上“在運行時添加字段”的想法甚至沒有任何意義。 Java是一種靜態語言,這意味着要編譯代碼,必須在編譯時知道所有類字段的類型信息,這意味着這些字段必須在編譯時存在。 如果您創建一個像

class Person {
    String name;
    int age;
}

然后在代碼中的某處引用person.height ,因為height字段不存在,所以您的代碼甚至無法編譯。 因此,即使您可以在運行時添加height字段,當您的代碼最初都無法編譯時,還有什么意義呢? 這就是為什么我說不可能。

使用反射:否,但是可以使用設計模式在某種程度上增加行為。

請參閱以下文件。 鏈接

希望對您有所幫助。

暫無
暫無

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

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