Java 如何在交换机情况下使用枚举

Java 如何在交换机情况下使用枚举,java,enums,switch-statement,Java,Enums,Switch Statement,我正在尝试检查VO中设置了哪些值 下面是我的课程。我越来越 “必须用不合格的枚举常量医生替换合格的病例标签MyEnum.UserType.DOCTORS” 请帮我找出我做错了什么 MyEnum.java public MyEnum{ private UserType userType; public UserType getUserType(){ return userType; } public void setUserType(UserTy

我正在尝试检查VO中设置了哪些值

下面是我的课程。我越来越 “必须用不合格的枚举常量医生替换合格的病例标签MyEnum.UserType.DOCTORS

请帮我找出我做错了什么

MyEnum.java

public MyEnum{
    private UserType userType;

    public UserType getUserType(){
        return userType;
    }

    public void setUserType(UserType userType){
        this.userType = userType;
    }

    public static enum UserType{
        DOCTORS("D"),
        PATIENT("P"),
        STAFF("S");
    }

}
EnumTest.java

public EnumTest {

    .....
    public void onGoBack(MyEnum myEnum) {

        switch(myEnum.getUserType())
        {
            case UserType.DOCTORS: // this shows "The qualified case label MyEnum.UserType.DOCTORS must be replaced with the unqualified enum constant DOCTORS"
                break;

        }
    }

}

由于编译器知道您在switch语句中计算的枚举类型,因此应该按照错误提示删除“限定”部分(在您的示例中:
MyEnum.UserType.
),只需使用“unqualified”枚举
即可。见下文:

switch(myEnum.getUserType())
{
    case DOCTORS: 
        break;
}

尝试使用
病例医生:
,而不是按照编译器的建议。为什么不试着按照错误消息中的说明去做呢?我发现至少有一次这样的问题是有用的,而且投票数意味着ppl同意我的意见。这种语法是非常不寻常的,当你不在定义常量的类中时,你可以使用非限定常量名称。这个错误还使用了一些非常技术性的语言,很多人都不会马上理解。阅读错误消息真的比在上面贴一个问题并等待回答更难吗<代码>:/
如果在另一个类中有另一个常量调用相同的东西,该怎么办?在这种情况下,
DOCTORS
不是很含糊吗?@hellogoodbay不,它不会含糊不清,因为编译器确切地知道
开关
表达式的计算结果是哪种枚举类型。马特·鲍尔,我们都有不同的经验。没有必要责骂/贬低感谢你帮助的人。让我们保持专业。该用户花时间提问,可能只是需要一些关于如何解释错误消息的指导。我个人只是在学习Java,我来到这里也是因为我也不知道答案,只是有个例外。考虑到我们可以在Java中的任何地方使用
MyEnum.ABC
&
MyEnum.XYZ
,我惊讶地发现同样的语法在
switch-case
中是非法的。