Рекурсивная ссылка Java enum-должно работать?JAVA

Программисты JAVA общаются здесь
Anonymous
Рекурсивная ссылка Java enum-должно работать?

Сообщение Anonymous »

Я создал игрушечный пример в надежде воспроизвести ошибку, но ... это работает. Но я не могу найти никакой ошибки в исходном, более длинном коде. Поэтому я предполагаю, что этот подход может работать или потерпеть неудачу. И поэтому вопрос: разве этот подход не является жизнеспособным и не рекомендуется? Вид рекурсии в конструкторе. Но в моем основном коде я могу получить null в качестве значения аналогичного поля, несмотря на попытку вызова и осмотр в нескольких местах. Опять же, может быть, я просто упускаю ошибку. Но тогда, может быть, я не должен пытаться это сделать-? < /P>
Любой комментарий оценивается.public enum Animal {
APE,
HUMAN;

// nested object as field to contain properties
public final Properties props;

// private enum constructor which instantiates and populates the properties object
private Animal() {
props = new Animal.Properties(this);
}

public class Properties {
public final int height;
public final Animal ancestor;

private Properties(Animal animal) {
switch (animal) {
case APE -> {
this.height = 48;
this.ancestor = null;
}
case HUMAN -> {
this.height = 60;
this.ancestor = APE; // recursive reference to another enum value
}
default -> {
this.height = 0;
this.ancestor = null;
}
}
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/795 ... hould-work

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