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


    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");
    }

这段代码给了我:error:非静态变量user不能从静态上下文中引用。

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;
    }
}

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

问题与枚举变量无关,而是与静态字段和类与非静态字段和类有关。注意,当您写入

Car.user.NONE

Car.user指的是Car类上名为user字段,但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");
}

相关内容

  • 没有找到相关文章

最新更新