让我解释一下, 他们是一个插件(视频游戏模组),我想将一些东西添加到另一个插件(一个不同的模组)中,但我不想更改我没有制作的插件中的任何内容。但是要添加我想要的东西,我必须向某个类中的某些数组添加一些变量,我完全可以在另一个类中这样做,但它们已经完成,并且所有位置都已被占用。 所以在研究了最终变量如何工作(我有点猜测)之后,我认为它可能更容易
制作有问题的类的副本,将其放入我的插件中,更改变量,使其不是最终的,然后...在程序启动时覆盖原始类...如何进行。
好吧,这并不容易,但这是我唯一想到的事情,我仍然没有编辑原始文件,并且我的插件可以删除和添加而不更改任何内容。
我研究过类加载器和有人称为修补助手的东西(它实现了 ClassFileTransformer),但我不知道我在做什么。所以我想我应该在这里发布我想做的事情,看看是否有人有任何建议,我会继续尝试弄清楚类加载器或修补助手是否可以满足我的需求。 提前致谢!
最佳答案
您可以通过反射来做到这一点:
http://java-performance.info/updating-final-and-static-final-fields/
尽管这可能不是一个好主意 - 这些字段是最终的是有原因的。
关于java - 您是否有办法在程序运行时重写类(或者更改我猜的最终值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50869925/