Для ясности я сделаю все возможное, чтобы сформулировать вопрос через призму примера, а не из дампа кода.
Прежде чем перейти к моему примеру, у меня следующий вопрос: Как я могу написать метод, который принимает перечисление в качестве параметра и возвращает статическую информацию, хранящуюся в объекте (которыйнаследуется от общего родителя, где статическая информация определена).
Пример:
Я создаю игру, которая включает в себя множество навыков игрока.Эти умения создаются с помощью дерева объектов со следующим наследованием (SomeSkill представляет любое из дюжины или около того умений):
Skill> ActiveSkill> SomeSkill и Skill> PassiveSkill> SomeSkill
Псевдо-код для класса Skill:
Class Skill{
static string name = "Default Skill"
int level;
Skill(int level){
this.level = level;
}
static getName{
return name;
}
}
Имя статическое, так как имя навыка не должноне меняется, независимо от интанса.В моей реальной реализации Skill также включает статическую информацию description и id .
Фактическая реализация enum :
public enum SkillType
{
basic, speed_buff, leap, beat_down
}
Проблема:
Что я пытаюсь сделать, это написатьметод, который принимает перечисление SkillType в качестве аргумента и возвращает пригодный для использования объект Skill (НЕ экземпляр объекта Skill)
В коде Psuedo: Например, если я хочу выполнить циклчерез Enum и распечатайте имена всех умений ...
method getSkillClass(SkillType skillType){
if(skillType == beat_down) return BeatDown
if(skillType == leap) return Leap
...
}
for(e : SkillType.getKeys){
print(getSkillClass(e).getName);
}
Мое текущее "решение" было бы создать карту, которая соответствует SkillType списку экземпляров из Навыков со всеми нестатическимиинформация о навыке установлена на значения по умолчанию.
Это похоже на злоупотребление системой.
Как я могу чисто связать мой список-перечисление со статической информацией (не статическую информацию можно игнорировать) в моих различных классах навыков