无法从静态上下文引用非静态变量c,并且不能从静态上下文引用非静态变量

时间:2012-09-29 21:59:15

标签: java static non-static

  

可能重复:
  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不能从静态上下文引用

2 个答案:

答案 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();