enum Fruits{
BANANA,
ORANGE,
APPLE
}
- это то же самое, что и
class Fruits{
static final Fruits BANANA = new Fruits("BANANA", 0);
static final Fruits ORANGE = new Fruits("ORANGE", 1);
static final Fruits APPLE = new Fruits("APPLE", 2);
private Fruits(String name, int ordinal) {
super(name, ordinal);
}
}
с небольшим количеством вспомогательного материала.Попробуйте декомпилировать класс enum (например, с помощью javap
), и вы увидите, что это так.
Таким образом, когда вы пишете:
Fruits example = Fruits.ORANGE
, вы не создаете новыйэкземпляр класса: вы просто ссылаетесь на статическое поле.