java – 如何在编译期间翻译枚举以及如何创建对象

enum icecream {
    vanilla(100), strawberry(20);
    int price;

    icecream(int i) {
        price = i;
    }

}

关于如何在编译期间创建枚举对象,我有点困惑

我看到他们提到的一些例子

public enum Flavor
{
    COFFEE, VANILLA, CHOCOLATE, STRAWBERRY, RUM_RAISIN, PEACH
}

这被翻译成(在编译期间)

public final class Flavor
extends java.lang.Enum
{
    public static final Flavor COFFEE = new Flavor("COFFEE", 0);
    public static final Flavor VANILLA = new Flavor("VANILLA", 1);
    // ...
}

链接:http://www.kdgregory.com/index.php?page=java.enum

但是当我将值与名称一起传递给我时,对象是如何创建的,它们看起来就像是方法调用. E.x.香草(100)这里的香草,价格是100,但它是如何创建的?我根本没有得到它.请帮忙 :(

最佳答案 香草(100),草莓(20)只是一个java5表示法.它在编译期间被翻译成适当的对象创建代码:

public static final icecream vanilla = new icecream(100);
public static final icecream strawberry = new icecream(20);

BTW,java类型应该是CamelCased,所以,icecream应该命名为IceCream.

点赞