2
我試圖重命名使用ASM 4.0類:如何用ASM重命名一個類,並保持在同一個類加載器中?
ClassReader reader = new ClassReader(
loader.getResourceAsStream("test/MyClass.class")
);
ClassWriter writer = new ClassWriter(reader, 0);
ClassVisitor visitor = new RemappingClassAdapter(visitor, new Remapper() { /* skipped */ });
reader.accept(visitor, 0);
return new ClassLoader() {
public Class<?> load(final String name, final byte[] bytes) {
return this.defineClass(name, bytes, 0, bytes.length);
}
}.load("test/MyClass", writer.toByteArray());
我故意跳過重命名的一部分。一個新班級應該是原始班級的精確副本。它是,但它不能再作爲一箇舊的使用:
java.lang.ClassCastException: test.MyClass cannot be cast to test.MyClass
如何留在相同的類加載器?