如何在java中返回枚举值

时间:2015-08-06 07:32:23

标签: java enums return

如何返回这样的枚举?

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

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;
      }
   }
}

4 个答案:

答案 0 :(得分:8)

我不是“//扫描仪等”但是,方法返回类型应为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() { }

     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);
}

答案 1 :(得分:1)

将您的代码更改为:

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应该具有大写名称(因为所有类都应该)。

答案 2 :(得分:1)

我认为你应该做这样的事情,一个枚举类。然后你可以添加你想要的任意数量的类型,方法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;
    }
}

答案 3 :(得分:0)

您可以通过以下方式获取值。在这里,您有私有构造函数,它将初始化您要设置的值,并且当实例方法值被调用时,只需返回 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());
    }

}