0

素敵なクラスがあります。素敵な内部クラスがあります。その内部クラスには、いくつかの優れたパブリック変数があります。

外部クラスのコンストラクターで内部クラスの変数を使用するにはどうすればよいですか?

public class Outer {
    class Inner {
        public int id;
        public Inner () { }
    }

    public Outer () {
        System.out.println(Inner.id); // Error!
    }
}

「非静的フィールド Inner.id への静的参照を作成できません。」

このプロジェクトは Gson を使用しています。クラス Inner とそのプロパティ ID は、次のように JSON によって定義されます。

{
    "Outer": {
        "Inner": {
            "id": 0
        }
    }
}

次に、通常どおり Gson を使用してシリアル化を呼び出します。

Gson gson = new Gson();
Outer o = gson.fromJson(json, Outer.class);

ここで私が間違っていることはありますか?Inner を id とともに静的クラスに変更できますが、Gson がスローアップします。静的ゲッターとセッターを設定できますが、それも機能しません。

どんな助けでも大歓迎です。

4

3 に答える 3

4

上記の提案はすべて正解ですが、内部クラスは静的にすることをお勧めします。なぜなら

InnerClass のインスタンスは、OuterClass のインスタンス内にのみ存在でき、その外側のインスタンスのメソッドとフィールドに直接アクセスできます。

内部クラスをインスタンス化するには、まず外部クラスをインスタンス化する必要があります。次に、これで外側のオブジェクト内に内側のオブジェクトを作成します

于 2013-03-15T06:41:18.603 に答える
0

System.out.println( newInner().id);を使用してみてください。

于 2013-03-15T06:38:40.767 に答える
0

System.out.println(new Inner().id);

于 2013-03-15T06:39:19.433 に答える