gpt4 book ai didi

java - 在运行时更改java类

转载 作者:行者123 更新时间:2023-12-01 05:46:19 26 4
gpt4 key购买 nike

这是我的问题。假设有两个类,

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

在编译时,我定义了 A 类和 B 类。

现在,无论我在编译时在B类中定义了什么,我都想在运行时将其更改为与A类相同。我的意思是当B类在运行时加载时,我想删除所有定义的属性、方法。等等。然后将 A 类中定义的所有内容添加到 B 类中。

因此,B 类就像 A 类的虚拟副本。在运行时,B 类与 A 类相同,只是它们位于不同的包中。

这可能吗?如何?

最佳答案

我认为您不能修改已加载的类。您可以代理它,从而更改行为,但它不会修改加载的类,并且您应该有能力在正确的位置注入(inject)您的实现。

这是使用 setter 有时/通常比在代码中调用 new 更好的原因之一;它将提供注入(inject)模拟对象(或代理)而不是运行时实现的能力。

我很高兴这是不可能的(或者不应该对 JVM 进行修改),因为这将是一个巨大的安全漏洞。

您可以通过使用特制的类加载器来实现类似的效果,该类加载器可以识别所请求的类并返回不同的内容。尽管这是一个等待发生的事故。

关于java - 在运行时更改java类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5848203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com