主要访问getPrice()方法需要什么代码?
我可以使用内置值()访问公共枚举类型;功能
但是无法弄清楚如何打印价格,谢谢
public enum Drink {
GUINNESS(Type.STOUT),
COLA(Type.COLA);
private Type type;
private Drink(Type type) {
this.type = type;
}
private enum Type {
STOUT {
@Override
public double getPrice() {
return 4.0;
}
},
COLA {
@Override
public double getPrice() {
return 2.0;
}
};
public abstract double getPrice();
}
}
答案 0 :(得分:2)
您必须在price
枚举中为Drink
添加一个getter。
public double getPrice() {
return type.getPrice();
}
然后你可以这样做:
Drink cola = Drink.COLA;
double price = cola.getPrice();
答案 1 :(得分:2)
您无法访问public enum
之外的私人内部枚举,但您可以委派该方法:
public enum Drink {
GUINNESS(Type.STOUT),
COLA(Type.COLA);
private Type type;
private Drink(Type type) {
this.type = type;
}
public double getPrice() {
return type.getPrice();
}
private enum Type {
STOUT {
@Override
public double getPrice() {
return 4.0;
}
},
COLA {
@Override
public double getPrice() {
return 2.0;
}
};
public abstract double getPrice();
}
}
您在enum Drink
中定义了相同的方法:
public double getPrice() {
return type.getPrice();
}
答案 2 :(得分:1)
你不能,因为另一个类根本看不到嵌套的枚举。您可以将委派副本添加到顶级枚举。