簡體   English   中英

在運行時更改 java class

[英]change the java class at runtime

這是我的問題。 假設有兩個類,

Class A --> in package PA
Class B --> in package PB

在編譯時,我定義了 Class A 和 Class B。

現在,無論我在編譯時在 Class B 中定義了什么,我都想在運行時將其更改為與 Class A 相同。 我的意思是當 Class B 在運行時加載時,我想刪除所有定義的屬性、方法。 等然后將 Class A 中定義的所有內容添加到 Class B。

So Class B is like a dummy copy of Class A. And at runtime, Class B is the same as Class A except that they in different package.

這可能嗎? 如何?

我認為您不能修改已加載的 class。 您可以代理它,從而改變行為,但它不會修改加載的 class 並且您應該有能力將您的實現注入正確的 position。

這是使用 setter 有時/通常比在代碼中調用new更好的原因之一; 它將提供注入模擬 object (或代理)而不是運行時實現的能力。

我很高興這是不可能的(或者不應該對 JVM 進行修改),因為這將是一個巨大的安全漏洞。

您可以通過使用特制的類加載器來實現類似的效果,該類加載器識別請求的 class 並返回不同的內容。 雖然這是一場等待發生的意外。

暫無
暫無

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

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