У меня есть два перечисления, которые перекрестно ссылаются друг на друга. Каждый из них имеет конструктор, который имеет параметр для другого перечисления.Перечисления, которые перекрестно ссылаются друг на друга, дают разные результаты в зависимости от заказа
Они смотрют что-то вроде:
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 создается. Но есть ли способ, чтобы каждый из них правильно ссылался на другого? Я рассматриваю возможность создания двух одноэлементных хэшмапов, которые искусственно перекрестно ссылаются на два, но есть ли лучшая идея?
счетчиков? Конструкторы с конструкторами для другого? Нет счетчиков, а ctors не имеют «ctors», они устанавливают переменную экземпляра, которая ссылается на другую. Вы не показываете, где вы их создаете, но если каждый из них является одним синглом с ссылкой на другой, может потребоваться переосмыслить дизайн - какова фактическая связь между ними? –
Я не хотел сказать, что каждый конструктор имеет конструктор; Я хотел сказать, что каждый конструктор имеет параметр. – Robert