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