gpt4 book ai didi

java - 枚举在编译过程中是如何翻译的以及对象是如何创建的

转载 作者:搜寻专家 更新时间:2023-11-01 03:27:52 24 4
gpt4 key购买 nike

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

但是当我传递一个值和名称时对象是如何创建的,因为对我来说它们看起来就像方法调用。前任。 vanilla(100) 这里的 vanilla 价格是 100 但它是如何创建的呢?我根本不明白。请帮助:(

最佳答案

vanilla(100), strawberry(20) 只是一个 java5+ 符号。它在编译期间被翻译成正确的对象创建代码:

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

顺便说一句,java 类型应该是 CamelCased,所以,icecream 应该命名为 IceCream

关于java - 枚举在编译过程中是如何翻译的以及对象是如何创建的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8620261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com