Java 1.6中的枚举类主体功能
这是K&B6书中的SCJP1.6问题。 这是一个特定于常量的类主体的示例,它是SCJP 6的一个特性。如何执行此操作并查看结果输出 我有两个问题:Java 1.6中的枚举类主体功能,java,enums,Java,Enums,这是K&B6书中的SCJP1.6问题。 这是一个特定于常量的类主体的示例,它是SCJP 6的一个特性。如何执行此操作并查看结果输出 我有两个问题: 我的Java主方法是什么样子的?请帮助我执行这个部分代码。我无法理解输出的行为 getLidCode()方法如何在Java 1.6中的这个类主体中工作 您所称的特定于常量的类主体是指枚举常量的可选类主体。它被实现为一个匿名的内部类,扩展了外部的封闭枚举。因此,在您的例子中,枚举常量将是一个匿名的内部类型,它扩展了CoffeeSize,并覆盖了方法ge
getLidCode()
方法如何在Java 1.6中的这个类主体中工作您所称的特定于常量的类主体是指枚举常量的可选类主体。它被实现为一个匿名的内部类,扩展了外部的封闭枚举。因此,在您的例子中,枚举常量
将是一个匿名的内部类型,它扩展了CoffeeSize
,并覆盖了方法getLidCode()
。在伪代码中,内部类如下所示:
enum CoffeeSize{
BIG(8),
HUGE(10),
OVERWHELMING(16) {
public String getLidCode(){
return "A";
}
};
private int ounces;
public int getOunces(){
return ounces;
}
CoffeeSize(int ounces){
this.ounces = ounces;
}
public String getLidCode(){
return "B";
}
}
在常量BIG
或BIG
上调用getLidCode()
将调用基本枚举实现,而在overriding
上调用相同的方法将调用该方法的重写版本,因为overriding
实际上是另一种类型。要进行测试,只需运行代码来调用不同枚举常量的getLidCode()
class CoffeeSize$1 extends CoffeeSize {
@Override
public String getLidCode() {
return "A";
}
}
干杯:-)
“执行”什么?这是一个枚举CoffeeSize.BIG.getOunces()
我能知道我错在哪里吗?2.getLidCode()方法在Java 1.6中这个常量特定的类主体中是如何工作的,我接受我不知道这个枚举代码应该如何工作,所以我发布了这个问题“常量特定的类主体”是什么意思?非常好的解释。感谢这么多的理解,我非常感谢你。我不知道为什么其他人否决了我的问题。我只需要一个解释:(,我们都在这里互相帮助。请分享知识。再次感谢Perception Perception,你为什么投票关闭它,这是一个现实的问题question@Deepak-这是一个协作网站,因此我无法控制其他人的行为。Aka,我没有投票关闭,但其他人可能会关闭。Perception,我已向您发送了一封电子邮件。您可以回复吗
System.out.println(CoffeeSize.BIG.getLidCode());
System.out.println(CoffeeSize.HUGE.getLidCode());
System.out.println(CoffeeSize.OVERWHELMING.getLidCode());
I have executed my answer,as below.Please correct me if im wrong.output is given.
public class EnumOverriddenExample {
enum CoffeeSize{
BIG(8),
HUGE(10),
OVERWHELMING(16){
public String getLidCode(){
return "A";
}
};
CoffeeSize(int ounces){
this.ounces = ounces;
}
private int ounces;
public int getOunces(){
return ounces;
}
public void setOunces(int ounces){
this.ounces=ounces;
}
public String getLidCode(){
return "B";
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("CoffeeSize for BIG is "+EnumOverriddenExample.CoffeeSize.BIG.getLidCode());
System.out.println("CoffeeSize for HUGE is "+EnumOverriddenExample.CoffeeSize.HUGE.getLidCode());
System.out.println("CoffeeSize for OVERWHELMING is "+EnumOverriddenExample.CoffeeSize.OVERWHELMING.getLidCode());
System.out.println("CoffeeSize for BIG is "+EnumOverriddenExample.CoffeeSize.BIG.getOunces());
System.out.println("CoffeeSize for HUGE is "+EnumOverriddenExample.CoffeeSize.HUGE.getOunces());
System.out.println("CoffeeSize for OVERWHELMING is "+EnumOverriddenExample.CoffeeSize.OVERWHELMING.getOunces());
}
}
Output is below
-----------------------------------
CoffeeSize for BIG is B --> returns "B"
CoffeeSize for HUGE is B -->returns "B"
CoffeeSize for OVERWHELMING is A--constant specific class body returns "A"
CoffeeSize for BIG is 8
CoffeeSize for HUGE is 10
CoffeeSize for OVERWHELMING is 16
------------------------------------