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 呕吐。我可以设置静态 getter 和 setter,但这也不起作用。

任何帮助,将不胜感激。

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 回答