ASMを使用していくつかのJavaバイトコードを調べましたが、これらの行を見て非常に驚きました
public class C1 {
// compiled from: C1.java
// access flags 0x9
public static INNERCLASS C2$C3 C2 C3
//..
}
C1
にINNERCLASS
含まれるクラスの宣言がありC2
ます。これはどうあるべきか?もしそうなら、なぜそれが必要であり、それは多くの冗長性につながりませんか?
Eclipse Indigo SR1を使用して、外部型のmainメソッドに内部型のローカル変数を持つ最小限の例をコンパイルしました。バグを報告する必要がありますか?
public class C1 {
public static void main(String[] args) throws Exception {
C2.C3 c3 = new C2.C3();
ClassReader cr = new ClassReader(C1.class.getName());
cr.accept(new TraceClassVisitor(new PrintWriter(System.out)), 0);
}
}
public class C2 {
public static class C3 {}
}