6

次のタイプのコードを生成するリスクのあるソースコードジェネレーターがあります(単なる例)。

public class Outer {
    public static final Object Inner = new Object();

    public static class Inner {
        public static final Object Help = new Object();
    }

    public static void main(String[] args) {
        System.out.println(Outer.Inner.Help);
        //                             ^^^^ Cannot access Help
    }
}

上記の例でInnerは、は。の内部であいまいに定義されていOuterます。Outer.Innerネストされたクラスと静的メンバーの両方にすることができます。javacとEclipseコンパイラの両方が逆参照できないようOuter.Inner.Helpです。どうすればアクセスできますHelpか?

上記のコードが生成されるため、名前の変更は(単純な)オプションではないことを忘れないでください。

4

2 に答える 2

6

以下は私にとってはうまくいきます(非静的な方法で静的メンバーにアクセスすることに関する警告があります):

public static void main(String[] args) {
    System.out.println(((Inner)null).Help);
}
于 2012-05-28T10:48:20.030 に答える
1

どうですか

public static void main(String[] args) {
    System.out.println(new Inner().Help);
}
于 2012-05-28T10:27:58.473 に答える