如何在java中返回枚举值

2022-09-03 14:04:10

如何返回这样的枚举?

在我用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;
      }
   }
}

答案 1

我不知道“//scanner等”做什么,但方法返回类型应该是:decizion

    public static decizion yourDecizion() { ... }

此外,您可以将 、 等值添加到枚举常量中:YN

    public enum decizion{
         YES("Y"), NO("N"), OTHER;
          
         String key;
      
         decizion(String key) { this.key = key; }
     
         //default constructor, used only for the OTHER case, 
         //because OTHER doesn't need a key to be associated with. 
         decizion() { }

         static decizion getValue(String x) {
             if ("Y".equals(x)) { return YES; }
             else if ("N".equals(x)) { return NO; }
             else if (x == null) { return OTHER; }
             else throw new IllegalArgumentException();
         }
    }

然后,在该方法中,您可以执行以下操作:

    public static decizion yourDecizion() {
        ...
       String key = ...
       return decizion.getValue(key);
    }

答案 2

我认为你应该做这样的事情,一个枚举类。然后,您可以添加任意数量的类型,并且方法 yourDecizion() 将根据给定的参数返回枚举类型。

public enum SomeClass {

        YES(0),
        NO(1),
        OTHER(2);

    private int code;


    private SomeClass(int code) {
        this.code = code;
    }

    public int getCode() {
        return code;
    }

    public static SomeClass yourDecizion(int x) {
        SomeClass ret = null;
        for (SomeClass type : SomeClass.values()) {
            if (type.getCode() == x)
                ret = type;
        }
        return ret;
    }
}