Java-在方法调用中创建对象

Java-在方法调用中创建对象,java,object,static,javac,Java,Object,Static,Javac,我很确定我以前做过,所以我不确定为什么现在它会导致错误。这是我得到的错误: $ 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)); ^ 它指向我定义一个新对象的地方,所以在静态上下文中,不允许

我很确定我以前做过,所以我不确定为什么现在它会导致错误。这是我得到的错误:

$ 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
  • Point是我定义的一个类。构造函数被正确调用
  • p是点的一个例子。它有两个字段:d0和d1(尺寸0和尺寸1,以减少与X和Y的混淆)

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

Point是嵌套类吗?如果是这样的话,在声明中添加单词
static
。我怀疑这一行代码的上下文比我们现在看到的要多。一般来说,没有理由不能声明对象的实例。在这里发布您的代码,您应该花时间了解非静态内部类需要其封闭类型的实例。这是因为内部类具有对封闭类型的实例字段和方法的隐式访问。静态内部类不能隐式访问这些实例字段和成员,因此不需要实例。