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

标签 java enums

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

枚举是公开的,否则我会收到“用户有私有(private)访问错误”。我知道枚举是在构造函数中声明的非静态变量,所以我认为这是错误的来源,但我不知道如何修复它。

最佳答案

问题与枚举变量无关,与静态字段和类以及非静态字段和类有关。注意当你写

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 而不是 用户用户字段。

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

关于java - 如何从静态上下文中引用枚举变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14417532/

相关文章:

java - 如何在不映射驱动器的情况下创建代表 Windows 服务器上路径的文件?

c# - 从标记的枚举中获取描述属性

java - 如何为每个键条目获取单独的RDD

java - 使用键盘快捷键填充 jTextField

java - 单击带有 java selenium 的第二个单选按钮

java - Java中的Switch语句会选择相反的情况

c++ - 获取不同的枚举值 C++

c# - 如何从枚举中获取数值?

java - 如何确定 java 中枚举的最低/最高索引?

java - android.widget.LinearLayout 无法转换为 RecyclerView 中的 android.widget.TextView?