繁体   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