如何解决Java 反射:为抽象类创建构造函数
如果我有这个不能修改的类...
public abstract class AClass {
Object value;
public AClass(Object value) { this.value = value; }
}
那我如何使用反射创建它的实例?
这...
Class<?> clazz = // some class
Constructor</*someClass*/> constructor = AClass.class.getConstructor(clazz);
Object key = clazz.getConstructor(Object.class).newInstance(/*something*/);
/*someClassResult */ result = constructor.newInstance(key);
在最后一行抛出一个 InstantiationException。
解决方法
您可以实例化任何类,甚至是使用 sun.misc.Unsafe 的抽象类。 示例:
Field theunsafeField =
Unsafe.class.getDeclaredField("theUnsafe");
theunsafeField.setAccessible(true);
Unsafe unsafe = (Unsafe) theunsafeField.get(null);
AClass aclazz = (AClass) unsafe.allocateInstance(AClass.class);
否则你可以创建一个扩展 AClass 的小类,然后你可以实例化你的实现
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。