Как переводятся перечисления во время компиляции и как создаются объектыJAVA

Программисты JAVA общаются здесь
Anonymous
Как переводятся перечисления во время компиляции и как создаются объекты

Сообщение Anonymous »

Код: Выделить всё

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) здесь для ванили цена 100, но как она на самом деле создается? Я вообще этого не понимаю. Пожалуйста помогите :(

Вернуться в «JAVA»