-1

可能重复:
不能从静态上下文(java)引用非静态变量

我试图创建同一个类的多个对象(在本例中为汽车),然后我试图检查是否创建了 c1(对象的名称)(知道它是),然后检查是否 c2(其他同一类的对象)被创建(知道它不是)。我创建了汽车类:包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: /* * 要更改此模板,请选择 Tools | 模板 * 并在编辑器中打开模板。*/ 打包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 不能从静态上下文中引用

4

2 回答 2

3

该数组Car[] c被定义为 Park 的对象变量,因此您必须使用park1.c[a]而不是尝试调用引用c[a]

变量a也是 Park 的对象,您不能从main. 它应该park1.a或更好地用吸气剂包装变量park1.getA()

于 2012-09-29T22:00:34.347 回答
1

除非您在其实例上调用它们,否则无法在静态方法中访问非静态变量。在您的情况下,因为 c[] 是一个非静态的实例变量,并且您在静态方法中访问它,您应该像这样在 park instanc 上访问它:

Park park1 = new Park(5);
 park1.c[park1.a] = new Car();
于 2012-09-29T22:08:54.003 回答