java - 您是否有办法在程序运行时重写类(或者更改我猜的最终值)

标签 java class

让我解释一下, 他们是一个插件(视频游戏模组),我想将一些东西添加到另一个插件(一个不同的模组)中,但我不想更改我没有制作的插件中的任何内容。但是要添加我想要的东西,我必须向某个类中的某些数组添加一些变量,我完全可以在另一个类中这样做,但它们已经完成,并且所有位置都已被占用。 所以在研究了最终变量如何工作(我有点猜测)之后,我认为它可能更容易

制作有问题的类的副本,将其放入我的插件中,更改变量,使其不是最终的,然后...在程序启动时覆盖原始类...如何进行。

好吧,这并不容易,但这是我唯一想到的事情,我仍然没有编辑原始文件,并且我的插件可以删除和添加而不更改任何内容。

我研究过类加载器和有人称为修补助手的东西(它实现了 ClassFileTransformer),但我不知道我在做什么。所以我想我应该在这里发布我想做的事情,看看是否有人有任何建议,我会继续尝试弄清楚类加载器或修补助手是否可以满足我的需求。 提前致谢!

最佳答案

您可以通过反射来做到这一点:

http://java-performance.info/updating-final-and-static-final-fields/

尽管这可能不是一个好主意 - 这些字段是最终的是有原因的。

关于java - 您是否有办法在程序运行时重写类(或者更改我猜的最终值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50869925/

相关文章:

java - 为特定的 Java API 自动生成测试用例

java - 句子生成器java

java - Netty IO发送消息给客户端

python - 继承输入类的所有事件变量

java - JDBC 连接不上数据库

java - Apache Commons VFS : working with FTP

java - 如何将实例传递给实现 BeforeAllCallback 的类

jquery - 如何在 jQuery 中删除除一个元素之外的所有元素?

c++ - 调用 operator<< 时出现链接器错误,如何解决?

c++ - 未在此范围内声明的对象构造函数调用