1.Почему в конструктор объекта Enum нельзя передать значение позже (не в самом классе где он автоматически создается)?
2.Почему в енамах нет hashcode equals?
Используйте следующую запись:
Cat cat = Cat.Tom;
Если вы хотите добавить конструкторы, то их нужно объявлять неосредтсвенно в самом enum:
public enum Cat {
TOM(1),
BOB(2);
private int number;
Cat(int number) {
this.number = number;
}
public int getNumber() {
return number;
}
}
Вызывать конструкторы вне определения enum нельзя, так как грубо говоря enum - список именованых констант.
Другими словами, можете воспринимать enum как нечто вроде этого:
public final class Cat extends java.lang.Enum {
public final static Cat TOM = new Cat(1);
public final static Cat BOB = new Cat(2);
private int number;
private Cat(int number) {
this.number = number;
}
public int getNumber() {
return number;
}
}
По второму вопросу
Enum классы имеют hashCode и equals, просто их нельзя переопределить.
Можете убедится в этом вызвав:
int hash = Cat.TOM.hashCode();
и
boolean val = Cat.TOM.equals(Cat.BOB);
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости