Java 枚举未提供预期结果

Java 枚举未提供预期结果,java,enums,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.valu

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

结果我得到了糖果和蛋糕,而不是“黄色糖果”和“饼干”。 要获得“Yellow candy”和“cookie”,我需要做哪些更改?

请尝试以下操作:

public enum Yummy{
     CANDY ("yellow candy"), CAKE ("cookie");

     private String name;

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

     public String toString() {
         return this.name;
     }
}
您已经定义了一个枚举“A.Yummy”和两个字符串“A.Candy”和“A.CAKE”

它们根本没有联系

您需要删除字符串并添加类似的内容


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

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

    private Yummy(String value) {
      this.value = value;
    }
  };
然后在代码中可以使用
CANDY.value
或重写
toString()
方法。

尝试以下方法:

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