if(array[3][3].getCall() == false && array[3][3].getUser() == Car.user.NONE )
{
array[3][3] = new Car('s', Car.user.USER, false);
aCounter++;
System.out.println("everything is fine");
}
这段代码告诉我:错误:无法从静态上下文引用非静态变量用户。
public class Car
{
public enum User { USER, COMP, NA };
private char object;
public User user;
private boolean call;
public Car(char object, User user, boolean call)
{
this.object = object;
this.user = user;
this.call = call;
}
}
枚举是公开的,因为我得到“用户有私人访问错误”。我知道枚举是一个在构造函数中声明的非静态变量,所以我认为这是错误的来源,但我不知道如何解决它。
答案 0 :(得分:6)
该问题与枚举变量无关,与静态字段和类与非静态字段和类有关。请注意,当你写
Car.user.NONE
Car.user
引用user
类上名为Car
的字段 - 但Car.user
是实例变量,而不是静态变量。因此,错误:
non-static variable user cannot be referenced from a static context
要解决此问题,只需将Car.user
更改为Car.User
,以便表达式引用enum User
而不是User user
字段。
if(array[3][3].getCall() == false && array[3][3].getUser() == Car.User.NONE )
{
array[3][3] = new Car('s', Car.User.USER, false);
aCounter++;
System.out.println("everything is fine");
}