我可以在Java中使用反射重新定义方法/构造函数吗?

Nik*_*Nik 3 java reflection bytecode

我有一个被调用的类A,我需要创建该类的新对象而不调用它的构造函数.我想通过反射设置它的所有属性.

我可以A使用反射重新定义类的构造函数吗?

或者有其他办法可以做到这一点吗?

Pet*_*rey 7

在Sun/Oracle JVm中,您可以使用Unsafe.allocateInstance(Class).否则,您必须生成字节代码以创建实例而无需调用构造函数.您可以使用ASM.如果没有使用Reflection的构造函数,则无法创建实例.

顺便说一句:您可以使用字节代码操作来定义新方法,但是要添加构造函数,您必须在加载之前更改类.(这很棘手)

  • 这真的很有趣,如果您对“在加载之前更改类”多一点了解,那就太好了……您的解决方案几乎解决了我的问题。谢谢 (2认同)