java - 在java中,这样的枚举类型编译成什么?

标签 java enums java-8 enumeration

下面是定义枚举类型的代码。

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;
    }
}

关于java - 在java中,这样的枚举类型编译成什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31039980/

相关文章:

java - 删除框架的标题栏并保留调整大小机制 - Java

c++ - 运算符重载 << 用于枚举到 ostringstream

带有标志枚举的 C# 设置

java - 使用循环在一个类中为另一个类的多个实例中的按钮添加 ActiveListener

java - Taglib 显示 java.time.LocalDate 格式化

java - 使用 compareTo 方法比较两种不同的数据类型

java - launch4j和classpath上的外部文件

java - 动画/滚动文本

c - 枚举数据类型和 gcc

Java 8 嵌套流 : return a value in last stream