Java 如何从静态上下文引用枚举变量?

Java 如何从静态上下文引用枚举变量?,java,enums,Java,Enums,这段代码告诉我:错误:不能从静态上下文引用非静态变量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 fi

这段代码告诉我:错误:不能从静态上下文引用非静态变量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");

    }

枚举是公共的,因为我得到了“用户有私有访问错误”。我知道enum是构造函数中声明的非静态变量,所以我认为这就是错误的来源,但我不知道如何修复它。

问题与enum变量无关,与静态字段和类与非静态字段和类有关。注意,当你写作时

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;
    }
}
Car.user
指的是
Car
类上名为
user
的字段,但
Car.user
是一个实例变量,而不是静态变量。因此,错误是:

无法从静态上下文引用非静态变量用户

要解决此问题,只需将
Car.user
更改为
Car.user
,使表达式引用
enum user
而不是
user-user
字段

Car.user.NONE
根据,枚举是隐式的
静态的
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");
}