2014-07-16 33 views
0

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

}

我得到糖果和蛋糕作为结果,不是“黄色糖果”和“饼干”。 什么是我需要改变,以获得“yelow糖果”和“曲奇

回答

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

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

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

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

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

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

[演示](http://ideone.com/MmPxuj) – Arvind