枚举不提供预期的结果

时间:2014-07-16 07:40:55

标签: java enums

我在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”。 我需要改变什么来获得“黄色糖果”和“饼干?”

4 个答案:

答案 0 :(得分:6)

你已经定义了一个枚举" 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;
     }
}

答案 1 :(得分: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;
     }
}

答案 2 :(得分:1)

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

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

    private Yummy(String value) {
      this.value = value;
    }
  };

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

答案 3 :(得分:1)

试试这个:

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