第一个是枚举类
enum coffeeSize{
BIG(8), HUGE(10), OVERWHELMING(16);
private int ounces;
coffeeSize(int ounces ){
this.ounces = ounces;
}
public int getOunces(){
return ounces;
}
}
这是类CoffeeTest1和主要
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)
)。我想知道背后的这个简单的微妙逻辑。有人可以帮我理解吗?
答案 0 :(得分:1)
一个建议:查找,学习并遵循Sun Java编码标准。它会提高代码的可读性。
它输出8,因为根据你的枚举,这是BIG咖啡大小的大小,以盎司为单位。这是你传递给BIG构造函数的值。
drink1
是类的实例,它具有名为coffeeSize
的{{1}}类型的包可见数据成员。每个size
实例都有一个方法coffeeSize
,它返回传递给构造函数的整数值。
没有什么微妙之处。
答案 1 :(得分:1)
我不明白“drink1.size.getounces()”如何设法输出8。
[...]
我想知道背后的这个简单的微妙逻辑。
要理解这背后的逻辑,您可以将enum
视为常规class
(实际上是如何编译的),以及
BIG(8)
作为此类的实例,类似于
new coffeesize(8);
现在应该清楚为什么drink1.size.getOunces()
打印8:BIG
只是coffeesize
枚举的一个实例,在构造它时将ounces
设置为8。
答案 2 :(得分:0)
您会注意到枚举上定义了getOunces
方法。枚举值本身可以包含Java中的属性和方法。
暗示CoffeeTest1
有一个引用枚举值的字段。
所以drink1
是该类的一个实例。
size
属性设置为枚举的BIG
实例。
Big
有ounces
8。
答案 3 :(得分:0)
当你指定BIG(8)
时,你正在创建它,将8传递给它的构造函数(10或16)。当您使用coffeeSize.BIG.getOunces()
时,您正在调用其方法getOunces
。 BIG
,HUGE
和OVERWHELMING
是coffeeSize
的可能值,每个值都有自己的状态。
答案 4 :(得分:0)
enum Colour {
Black,White,Red,Green,Yellow,Grey
}
public class EnumExample {
public static void main(String[] args) {
Colour colour;
colour = Colour.Black;
System.out.println("Selected "+colour+" Colour");
colour = Colour.Yellow;
System.out.println("Selected "+colour+" Colour");
}
}