如何解决我可以在Java中使用反射重新定义方法/构造函数吗?
| 我有一个名为A
的类,我需要在不调用其构造函数的情况下创建该类的新对象。我想通过反射设置其所有属性。
我可以使用反射重新定义类A
的构造函数吗?
还是有其他方法可以做到这一点?
解决方法
在Sun / Oracle JVm中,您可以使用
Unsafe.allocateInstance(Class)
。否则,您必须生成字节码来创建实例,而无需调用构造函数。您可以为此使用ASM。如果没有构造函数,则不能单独使用Reflection创建实例。
顺便说一句:您可以使用字节码操作定义一个新方法,但是要添加构造函数,则必须在加载类之前对其进行更改。 (这很棘手)
,使用参数最少的构造函数调用对象;使用伪参数。然后继续操作您喜欢的对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。