如何在java中返回枚举值

如何在java中返回枚举值,java,enums,return,Java,Enums,Return,如何返回这样的枚举 在我用0如果否,1如果是和2如果其他返回int之前。但这不是一个好办法。那么应该怎么做呢。我的代码: class SomeClass{ public enum decizion{ YES, NO, OTHER } public static enum yourDecizion(){ //scanner etc if(x.equals('Y')){ return YES; } el

如何返回这样的枚举

在我用0如果否,1如果是和2如果其他返回int之前。但这不是一个好办法。那么应该怎么做呢。我的代码:

class SomeClass{
   public enum decizion{
      YES, NO, OTHER
   }

   public static enum yourDecizion(){
      //scanner etc
      if(x.equals('Y')){
         return YES;
      }
      else if (x.equals('N')){
         return NO;
      }
      else{
         return OTHER;
      }
   }
}
我不知道“//scanner等”的作用,但是方法返回类型应该是
decizion

publicstaticdecisionyourdecision(){…}
此外,您可以将
Y
N
等值添加到枚举常量中:

公共枚举决策{
是(“Y”)、否(“N”)、其他;
字符串键;
decizion(字符串键){this.key=key;}
//默认构造函数,仅用于其他情况,
//因为其他人不需要与密钥关联。
decizion(){}
静态决策getValue(字符串x){
如果(“Y”.equals(x)){返回YES;}
else如果(“N”.equals(x)){返回NO;}
如果(x==null){返回其他;}
else抛出新的IllegalArgumentException();
}
}
然后,在方法中,您只需执行以下操作:

publicstaticdecisionyourdecision(){
...
字符串键=。。。
返回decision.getValue(键);
}
将代码更改为:

class SomeClass{
   public enum decizion {
      YES, NO, OTHER
   }

   public static decizion yourDecizion(){
      //scanner etc
      if(x.equals('Y')){
         return decizion.YES;
      }
      else if (x.equals('N')){
         return decizion.NO;
      }
      else{
         return decizion.OTHER;
      }
   }
}

注意:方法返回类型必须是
decizion
而不是
enum
,并且
decizion
应该有一个大写名称(所有类都应该有)

我认为您应该执行类似的操作,一个枚举类。然后可以添加任意多的类型,方法yourDecizion()将根据给定的参数返回枚举类型

公共枚举类{
是(0),
第(1)项,
其他(2);
私有整数码;
私有类(int代码){
this.code=代码;
}
公共int getCode(){
返回码;
}
公共静态类YourDecision(int x){
SomeClass ret=null;
for(SomeClass类型:SomeClass.values()){
if(type.getCode()==x)
ret=类型;
}
返回ret;
}
}

您可以通过以下方式获得值。这里有一个私有构造函数,它将初始化要设置的值,当调用实例方法值时,只需返回this.key

public class Application {
    enum Day {
        MONDAY("Monday"), TUESDAY("Tuesday");

        String key;

        Day(String str) {
            key = str;
        }

        public String value() {
            return this.key;
        }
    }

    public static void main(String[] args) {
        System.out.println(Day.MONDAY.value());
    }

}

另一方面,根据java惯例,枚举应该以大写字母开头。枚举是一个(特殊类型的)类,因此您应该将其声明为方法的返回类型。顺便说一句,最好将其命名为
Decision
(这是一个类)。此外,您也可以使用
switch
语句。就我个人而言,我倾向于避免
switch
语句,以免破坏规则。这确实是个人意见的问题。我只是提到了一种可能性:)在JVM中,switch语句被优化为比if语句快得多:@Konstantin Yovkov这可能是一个很好的理由,但是我问自己,为什么退出使用
switch
语句的选项?