2016-03-21 49 views
0

我非常肯定我之前完成了这个工作,所以我不确定它为什么会导致错误。这是错误我得到:Java - 在方法调用中创建一个对象

$ javac Zombie.java 
Zombie.java:51: error: non-static variable this cannot be referenced from a static context 
      array.add(new Point(p.d0-1, p.d1)); 
        ^

它的指向,我定义了一个新的对象,所以我不能让一个方法调用时,在静态环境中做到这一点?我是否需要定义一个变量并将其传入?因为会需要更多的时间和更加杂乱....

对于适当的上下文:

  • 阵列的类型是ArrayList
  • 点是我所定义的类。构造函数调用正确。
  • p是Point的一个实例。它有两个字段:d0和d1(维度0和维度1,以减轻与X和Y的混淆)。
+2

是'Point'嵌套类吗?如果是这样,请在其声明中添加“static”字样。 –

+0

我怀疑这里有更多的代码行,我们在这里看到。 *通常*没有理由不能声明对象的实例。 – David

+0

在此处发布您的代码 – Ramanlfc

回答

0

如果在非嵌套类的静态上下文中使用嵌套类,则需要声明嵌套类为public和static。我这样做了,不再有这个错误。

+2

您应该花时间了解非静态内部类需要其封闭类型的实例。这是因为内部类对隐含类型的实例字段和方法具有隐式访问权限。静态内部类不能隐式地访问这些实例字段和成员,因此不需要实例。 –

相关问题