Я пытаюсь переименовать класс, используя 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
Как оставаться в этом же загрузчике классов?