在Java中,这样的枚举类型编译成什么?
问题内容:
下面是定义枚举类型的代码。
enum Company{
EBAY(30), PAYPAL(10), GOOGLE(15), YAHOO(20), ATT(25);
private int value;
private Company(int value){
super(this.name());
this.value = value;
}
public int getValue(){
return value;
}
}
在内部进行编译,
final class Company extends Enum<Company>{
public final static Company EBAY = new Company(30);
public final static Company PAYPAL = new Company(10);
public final static Company GOOGLE = new Company(15);
public final static Company YAHOO = new Company(20);
public final static Company ATT = new Company(25);
private int value;
private Company(int value){
super(this.name(),Enum.valueOf(Company.class, this.name()));
this.value = value;
}
public int getValue(){
return value;
}
}
我的理解正确吗?
问题答案:
从功能上讲,是的。从字面上看,不是(您不能Enum
为一件事明确地子类化)。enum(s)
有一个toString
。而且您的enum
代码无效(您无法调用super()
),并且getValue
需要返回类型。
enum Company{
EBAY(30), PAYPAL(10), GOOGLE(15), YAHOO(20), ATT(25);
private int value;
private Company(int value){
this.value = value;
}
public int getValue(){
return value;
}
}