即使没有什么是静态的,也无法制作静态参考?

时间:2013-03-15 06:36:54

标签: java android json gson

我有一个很好的课程。它有一个很好的内部阶级。那个内部类有一些很好的公共变量。

如何在外部类的构造函数中使用内部类的变量?

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);

我在这里做错了吗?我可以将内部变为静态类以及id,但这会让Gson呕吐。我可以设置静态getter和setter,但这也不起作用。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:4)

以上所有建议都是正确的答案,但我会建议您的内部类应该是静态的。因为

InnerClass的实例只能存在于OuterClass的实例中,并且可以直接访问其封闭实例的方法和字段。

要实例化内部类,必须首先实例化外部类。然后,使用此

在外部对象中创建内部对象

答案 1 :(得分:0)

尝试使用System.out.println(new Inner()。id);

答案 2 :(得分:0)

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