2013-01-14 28 views
28

我想检查在我的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; 

     } 
    } 

} 
+5

尝试使用'case DOCTORS:'而不是编译器所建议的。 –

+2

你为什么不尝试去做错误信息说你应该做的事? – fge

+4

我发现在SO中至少有一次这个问题是有用的,upvotes的数量意味着ppl与我一致。这个语法非常不寻常,当你在定义常量的类之外时可以使用一个非限定常量名。 – Tristan

回答

48

读取错误消息。它告诉你究竟是该怎么做。

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

} 
+0

非常感谢你......它的工作原理 – Sree

+1

阅读错误信息比在SO上发布问题真的更难以等待答案吗? ':/' –

+1

如果你有另一个常量在另一个类中调用同样的东西,那么怎么办?在这种情况下,“医生”不会含糊不清? – HelloGoodbye