第一个是enum类
enum coffeeSize{
BIG(8), HUGE(10), OVERWHELMING(16);
private int ounces;
coffeeSize(int ounces ){
this.ounces = ounces;
}
public int getOunces(){
return ounces;
}
}这是类CoffeeTest1和main
public class CoffeeTest1 {
coffeeSize size;
public static void main (String args[]) {
CoffeeTest1 drink1 = new CoffeeTest1();
drink1.size = coffeeSize.BIG;
System.out.println(" " + drink1.size.getOunces());
}
}以下是输出
8 我的问题是:我不明白drink1.size.getounces()是如何输出8的。我还没有给出构造函数coffeeSize(8)对象(例如:coffeeSize somex = new coffeeSize(BIG))。我想知道这背后的简单微妙的逻辑。有人能帮我理解一下吗?
发布于 2012-06-22 00:21:30
我不明白"drink1.size.getounces()“是如何输出的8.
..。
:我想知道这个简单而微妙的逻辑。
为了理解这背后的逻辑,您可以将您的enum看作一个常规的class (这实际上是它的编译方式),并且
BIG(8)作为此类的实例,类似于
new coffeesize(8);现在应该清楚drink1.size.getOunces()打印8的原因了:BIG只是coffeesize枚举的一个实例,在构造枚举时将ounces设置为8。
发布于 2012-06-22 00:17:30
一个建议是:查找、学习并遵循Sun Java编码标准。它将提高代码的可读性。
它输出8,因为根据枚举,这是大咖啡的大小,以盎司为单位。这就是您传递给大型构造函数的值。
drink1是该类的实例,该类有一个名为size的coffeeSize类型的package visible数据成员。每个coffeeSize实例都有一个getOunces方法,该方法返回您传递给其构造函数的整数值。
这并没有什么微妙之处。
发布于 2012-06-22 00:18:11
您将注意到getOunces方法是在枚举上定义的。在Java中,枚举值本身可以有属性和方法。
这意味着CoffeeTest1有一个引用枚举值的字段。
所以drink1是该类的一个实例。
size属性设置为枚举的BIG实例。
Big有ounces 8。
https://stackoverflow.com/questions/11142353
复制相似问题