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的混淆)
static
。我怀疑这一行代码的上下文比我们现在看到的要多。一般来说,没有理由不能声明对象的实例。在这里发布您的代码,您应该花时间了解非静态内部类需要其封闭类型的实例。这是因为内部类具有对封闭类型的实例字段和方法的隐式访问。静态内部类不能隐式访问这些实例字段和成员,因此不需要实例。