Java 如何在交换机情况下使用枚举
我正在尝试检查VO中设置了哪些值 下面是我的课程。我越来越 “必须用不合格的枚举常量医生替换合格的病例标签MyEnum.UserType.DOCTORS” 请帮我找出我做错了什么 MyEnum.javaJava 如何在交换机情况下使用枚举,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
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
中是非法的。