为了清楚起见,我将尽我所能通过一个例子的镜头而不是代码转储来构建问题。
在进入我的例子之前,我的问题如下:如何编写一个以枚举为参数的方法,并返回存储在对象中的静态信息(从公共父级继承,其中定义了静态信息)。
这个例子:
我正在创建一个包含许多玩家技能的游戏。这些技能是通过对象树创建的,具有以下继承性(SomeSkill 代表十几个技能中的任何一个):
技能 > 主动技能 > SomeSkill 和 技能 > PassiveSkill > SomeSkill
类技能的伪代码:
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 对象的实例)
在伪代码中:例如,如果我想遍历 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 与实例化技能列表相匹配,并将所有非静态技能信息设置为默认值。
但这似乎是对系统的滥用。
如何将我的枚举列表干净地链接到我的各种技能类中的静态信息(非静态信息可以忽略)?
LEATH
繁华开满天机
相关分类