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



我有一个名为A的类,我需要在不调用其构造函数的情况下创建该类的新对象。我想通过反射来设置它的所有属性。

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

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

在Sun/Oracle JVm中,您可以使用Unsafe.allocateInstance(Class)。否则,您必须在不调用构造函数的情况下生成字节码来创建实例。您可以使用ASM进行此操作。如果没有单独使用反射的构造函数,就无法创建实例。

BTW:您可以使用字节码操作定义一个新方法,但要添加构造函数,您必须在加载类之前更改它。(这很难做到)

使用参数量最少的构造函数调用对象;使用伪参数。然后继续以您喜欢的方式操作对象。

相关内容

  • 没有找到相关文章

最新更新