0

ASMを使用していくつかのJavaバイトコードを調べましたが、これらの行を見て非常に驚きました

public class C1 {

  // compiled from: C1.java
  // access flags 0x9
  public static INNERCLASS C2$C3 C2 C3

  //..
}

C1INNERCLASS含まれるクラスの宣言があり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 {}
}
4

1 に答える 1