4

この質問が以前に尋ねられた場合は、お許しください。私は Web とここでスタックオーバーフローを検索しました。

場合:

Java プロジェクトで行き詰まっており、別の内部クラスで内部クラスを使用しようとすると、コンパイラがプロジェクトをコンパイルしません。

コード:

public class outer  {
    public class middle {
        public class inner  {
            public int variable = "8";
        }
    }
}

宣言:

私は次のようにクラスを宣言しようとしています:

outer outerObject = new outer();
outerObject.middle middleObject = outerObject.new middle();
outerObject.middleObject.inner innerObject = outerObject.middleObject.new inner();

コンパイル結果:

source\start.java:8: error: cannot find symbol
                      outerObject.middleObject.inner innerObject = outerObject
.middleObject.new inner();
^

どんな返信でも大歓迎です!私の意図が不可能なのか、それとも単に間違ったことをしているのか.

良い1日を!

4

4 に答える 4

4

この線

outerObject.middleObject.inner innerObject = outerObject.middleObject.new inner();

する必要があります

outer.middle.inner innerObject = middleObject.new inner();

outerObjectフィールドがありませんmiddleObject。残念ながら、Java では static を変数式で修飾できるため、実際にコンパイルすると奇妙なコードが得られます。

これは、Java の命名規則に固執していれば、おそらくより明確になるでしょう。

于 2013-04-22T12:39:49.580 に答える
2

コードは次のようにコンパイルされません。

public int variable = "8";

この行は

public int variable = 8;

まずこの行を変更します。

于 2013-04-22T12:40:28.473 に答える
0

これを使って

public class outer  {
    public class middle {
        public class inner  {
            public int variable = 8;
        }
    }
    public static void main(String[] a) {
        outer outerObject = new outer();
        middle middleObject = outerObject.new middle();
        middle.inner innerObject = middleObject.new inner();
    }
}
于 2013-04-22T12:43:49.857 に答える
0

これを試してください:

    Outer outerObject = new Outer();
    Outer.middle middleObject = outerObject.new middle();
    Outer.middle.inner innerObject = middleObject.new inner();

また、次のように変更する必要があります。

 public int variable = "8";

 public String variable = "8";
于 2013-04-22T12:49:10.533 に答える