【问题标题】:How do I reference an enum variable from a static context?如何从静态上下文中引用枚举变量?
【发布时间】:2013-01-19 18:41:27
【问题描述】:
    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;
    }
}

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

【问题讨论】:

    标签: java enums


    【解决方案1】:

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 2019-03-17
    • 2011-11-30
    相关资源
    最近更新 更多