【问题标题】:enum does not provide expected result枚举没有提供预期的结果
【发布时间】:2014-09-06 15:16:32
【问题描述】:

我在 A 类中定义了一个枚举

public class A{

     public static final String CANDY = "yelow candy";
     public static final String CAKE = "cookie";

    public enum Yummy{
         CANDY, CAKE; 
    }

}

在另一个包中,

public class C {

   Yummy[] yummies = A.Yummy.values();

   for (Yummy yum : yummies){
          String yumString = yum.toString();
          System.out.println("yum =" + yumString);
   }

}

结果我得到的是 CANDY 和 CAKE,而不是“yelow candy”和“cookie”。 我需要更改什么才能获得“黄色糖果”和“饼干”?

【问题讨论】:

    标签: java enums


    【解决方案1】:

    您已经定义了一个枚举“A.Yummy”以及两个字符串“A.Candy”和“A.CAKE”。

    它们根本没有链接。

    您需要删除字符串并添加类似https://stackoverflow.com/a/13291109/1041364的内容

    public enum Yummy {
         CANDY("yelow candy"),
         CAKE("cookie");
    
         private String description;
    
         private Yummy(String description) {
             this.description= description;
         } 
    
         public String toString() {
             return this.description;
         }
    }
    

    【讨论】:

      【解决方案2】:

      尝试以下方法:

      public enum Yummy{
           CANDY ("yellow candy"), CAKE ("cookie");
      
           private String name;
      
           private Yummy(String name) {
               this.name = name;
           } 
      
           public String toString() {
               return this.name;
           }
      }
      

      【讨论】:

        【解决方案3】:

        枚举的附加值应保存在属性中。您必须提供构造函数来设置这些属性。

          public enum Yummy {
            CANDY("yelow candy"), CAKE("cookie");
            private String value;
        
            private Yummy(String value) {
              this.value = value;
            }
          };
        

        然后在代码中您可以使用CANDY.value 或覆盖toString() 方法。

        【讨论】:

          【解决方案4】:

          试试这个:

          class Ideone
          {
              public static void main (String[] args) throws java.lang.Exception
              {
                  for (Yummy yum : Yummy.values()) {
                      System.out.printf("%s, %s\n", yum, yum.getValue());
                  }
              }
          }
          enum Yummy {
              CANDY("yelow candy"),
              CAKE("cookie");
          
              private String value;
          
              private Yummy(String value) {
                  this.value = value;
              }
          
              public String getValue() {
                  return this.value;
              }
          }
          

          【讨论】:

            猜你喜欢
            • 2018-05-19
            • 1970-01-01
            • 1970-01-01
            • 2013-03-16
            • 2016-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多