首先,我将说明我对C#中的枚举更加熟悉,看起来java中的枚举非常混乱.
正如您所看到的,我正在尝试在下一个示例中使用switch语句@enums,但无论我在做什么,我总是会收到错误.
我收到的错误是:
SomeClass.AnotherClass.MyEnum.VALUE_A必须使用不合格的枚举常量替换合格的案例标签VALUE_A
事情是我非常理解错误,但我不能只编写VALUE_A,因为枚举位于另一个子类中.有没有办法解决这个问题?为什么它会在Java中发生?
//Main Class
public class SomeClass {
//Sub-Class
public static class AnotherClass {
public enum MyEnum {
VALUE_A, VALUE_B
}
public MyEnum myEnum;
}
public void someMethod() {
MyEnum enumExample //...
switch (enumExample) {
case AnotherClass.MyEnum.VALUE_A: { <-- error on this line
//..
break;
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 为什么在将case语句更改为时,以下代码无法编译
case ENUM1: doSomeStuff();
Run Code Online (Sandbox Code Playgroud)
作品?
public enum EnumType
{
ENUM1, ENUM2, ENUM3;
void doSomeStuff()
{
switch(this)
{
case EnumType.ENUM1: doSomeStuff();
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试检查我的VO中设置的值.
以下是我的clasess.我得到" 合格的案例标签MyEnum.UserType.DOCTORS必须用不合格的枚举常量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");
}
}
Run Code Online (Sandbox Code Playgroud)
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)