我有一个包含几个内部类的类.我想生成额外的内部类,使用ASM库与编译时私有内部类进行交互.我的代码看起来像:
public class Parent {
public void generateClass() {
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
cw.visit(49, Opcodes.ACC_PUBLIC, "Parent$OtherChild", null,
Type.getInternalName(Child.class), new String[]{});
// .. generate the class
byte[] bytes = cw.toByteArray();
Class<?> genClass = myClassLoader.defineClass("Parent$OtherChild", bytes);
}
private static class Child {
}
}
Run Code Online (Sandbox Code Playgroud)
如图所示,一个简单的交互示例是继承 - 我试图通过扩展私有内部类Child的类OtherChild.我在类加载器验证类定义时收到此错误消息:
IllegalAccessError: class Parent$OtherChild cannot access its superclass Parent$Child
Run Code Online (Sandbox Code Playgroud)
有没有办法生成可以与其他私有内部类交互的内部类?您可以假设这是从可以访问私有内部类的"安全区"执行的.
谢谢