我正在尝试使用ASM 4.0重命名一个类:
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
如何留在同一个类加载器中?