[英]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.