可能重复:
non-static variable cannot be referenced from a static context (java)
我正在尝试创建同一个类的多个对象(在本例中为汽车)然后我试图检查是否创建了c1(对象的名称)(知道它是)然后检查是否创建了c2(同一类的其他对象)(知道它不是)。 我创造了班级汽车: package parkingLot;
/**
*
* @author HASLima
*/
public class Car {
String brand;
String plates;
int mileage;
public String getMarca() {
return brand;
}
public void setMarca(String brand) {
this.brand = brand;
}
public String getMatricula() {
return plates;
}
public void setMatricula(String plates) {
this.plates = plates;
}
public int getKilometros() {
return mileage;
}
public void setKilometros(int mileage) {
this.mileage = mileage;
}
}
然后创建了Park类: / * *要更改此模板,请选择“工具”|模板 *并在编辑器中打开模板。 * / package parkingLot;
/**
*
* @author HASLima
*/
public class Park {
int nrOfCars;
int space;
Car[] c;
int a = 0;
public Park (int nrOfPlaces){
space = nrOfPlaces;
nrOfCars = 0;
}
public static void main(String[] args) {
Park park1 = new Park(5);
c[a] = new Car();
}
}
这就是问题,
c [a] =新车();
返回此错误:
非静态变量c无法从静态上下文中引用 和 非静态变量a不能从静态上下文引用
答案 0 :(得分:3)
数组Car[] c
被定义为Park的对象变量,因此您必须使用park1.c[a]
而不是尝试调用引用c[a]
变量a
也是Park的对象,您无法从main
引用它。它应该是park1.a
或者更好,然后使用getter park1.getA()
答案 1 :(得分:1)
非静态变量无法在静态方法中访问,除非您在其实例上调用它们。 在你的情况下,因为c []是一个非静态的实例变量,你在静态方法中访问它,你应该在park instanc上访问它,如下所示:
Park park1 = new Park(5);
park1.c[park1.a] = new Car();