ClassWriter cw = new ClassWriter(...);
byte[] bytes = cw.toByteArray();
我想从bytes
数组创建新的类实例。我该怎么做呢?它有可能吗?
答案 0 :(得分:8)
答案 1 :(得分:2)
这是可能的,您需要使用Reflection才能实现此目的。伪代码是:
final Class clazz = loadIntoCurrentClassLoader(bytes); //I'm assuming you wrote this already using defineClass
final YourClass foo ;
try {
foo = (YourClass) clazz.newInstance();
}
catch (final Exception e) {
throw new RuntimeException(e);
}
答案 2 :(得分:0)
我可以通过扩展ClassLoader和使用defineClass来创建类。但是后来创建的类将我的扩展ClassLoader作为其ClassLoader,当我的类的代码加载其他类时会导致失败。据推测,我可以通过创建我的ClassLoader以正确的方式委托一切来解决这个问题,但是如何做到这一点并不明显。