我有一个很好的课程。它有一个很好的内部阶级。那个内部类有一些很好的公共变量。
如何在外部类的构造函数中使用内部类的变量?
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,但这也不起作用。
任何帮助都将不胜感激。
答案 0 :(得分:4)
以上所有建议都是正确的答案,但我会建议您的内部类应该是静态的。因为
InnerClass的实例只能存在于OuterClass的实例中,并且可以直接访问其封闭实例的方法和字段。
要实例化内部类,必须首先实例化外部类。然后,使用此
在外部对象中创建内部对象答案 1 :(得分:0)
尝试使用System.out.println(new
Inner()。id);
答案 2 :(得分:0)
System.out.println(new Inner()。id);