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

问题描述

| 我有一个名为
A
的类,我需要在不调用其构造函数的情况下创建该类的新对象。我想通过反射设置其所有属性。 我可以使用反射重新定义类
A
的构造函数吗? 还是有其他方法可以做到这一点?     

解决方法

在Sun / Oracle JVm中,您可以使用
Unsafe.allocateInstance(Class)
。否则,您必须生成字节码来创建实例,而无需调用构造函数。您可以为此使用ASM。如果没有构造函数,则不能单独使用Reflection创建实例。 顺便说一句:您可以使用字节码操作定义一个新方法,但是要添加构造函数,则必须在加载类之前对其进行更改。 (这很棘手)     ,使用参数最少的构造函数调用对象;使用伪参数。然后继续操作您喜欢的对象。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...