gpt4 book ai didi

java - 如何将枚举干净地链接到类中的静态信息?

转载 作者:行者123 更新时间:2023-12-02 01:52:11 25 4
gpt4 key购买 nike

为了清楚起见,我将尽力通过示例而不是代码转储来提出问题。

在进入我的示例之前,我的问题如下:如何编写一个方法,将枚举作为参数,并返回存储在对象中的静态信息(该对象继承自公共(public)父级,其中定义静态信息)。

示例:

我正在创建一个包含许多玩家技能的游戏。这些技能是通过对象树创建的,具有以下继承关系(SomeSkill 代表十几个技能中的任何一个):

技能 > ActiveSkill > SomeSkill 技能 > PassiveSkill > SomeSkill

技能类的伪代码:

    Class Skill{
static string name = "Default Skill"
int level;
Skill(int level){
this.level = level;
}
static getName{
return name;
}
}

名称是静态的,因为无论实例如何,技能的名称都不应更改。在我的实际实现中,Skill还包括静态信息descriptionid

枚举的实际实现:

   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 与实例化技能列表相匹配的映射,并将所有非静态技能信息设置为默认值。

但这似乎是对系统的滥用。

如何将我的枚举列表干净地链接到我的各种技能类别中的静态信息(非静态信息可以忽略)?

最佳答案

Java 枚举允许使用构造函数将数据关联到枚举:

class Skill {
...
}

public enum SkillType {
Basic(new Skill(...)),
SpeedBuff(new Skill(...)),
Leap(new Skill(...)),
...

private final Skill skill;

public SkillType(Skill skill) {
this.skill = skill;
}

public Skill getSkill() {
return skill;
}
}

欲了解更多信息,请查看官方enum documentation中的“行星”示例.

关于java - 如何将枚举干净地链接到类中的静态信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52808616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com