Search code examples
javaenumsreturn

How to return enum value in java


How can I return enums like this?

Before I was returing an int with 0 if no, 1 if yes and 2 if other. But this wasn't good way to do. So how should it be done. My code:

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

Solution

  • I don't what the "//scanner etc." does, but the methods return type should be decizion:

        public static decizion yourDecizion() { ... }
    

    Furthermore, you can add the Y, N, etc. values to the enum constants:

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

    Then, in the method, you can just do:

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