У меня есть два перечисления, которые пересекаются друг с другом. У каждого есть конструктор, у которого есть параметр для другого перечисления.
Они выглядят примерно так:
SchoolEnum(ImmuneEnum value)
{
this.immune = value;
}
ImmuneEnum(SchoolEnum value)
{
this.school = value;
}
Однако, в зависимости от того, какой Enum я вызываю первым, я могу получить нулевое значение для ссылочной переменной.
ImmunityEnum immune = ImmunityEnum.IMMUNE_KANNIC;
SchoolEnum school = SchoolEnum.KANNIC;
System.out.println(school.getImmune())
System.out.println(immune.getSchool());
Производит вывод:
ноль
Kannic
SchoolEnum school = SchoolEnum.KANNIC;
ImmunityEnum immune = ImmunityEnum.IMMUNE_KANNIC;
System.out.println(school.getImmune())
System.out.println(immune.getSchool());
Производит вывод:
immunekannic
нуль
Кажется, это немного "проблема курицы и яйца" в том, когда создается экземпляр enum. Но есть ли способ, чтобы каждый из них правильно ссылался на другой? Я рассматриваю возможность создания двух одноэлементных хэш-карт, которые искусственно пересекаются с этими двумя, но есть ли лучшая идея?