Java 从枚举中检索数据

标签 java enums

我正在开发我的第一个java程序(所以这个问题相对简单)。我开发了某种基本的角色扮演游戏,研究角色的属性。

我的问题是:

  1. 如何从我创建的枚举中检索数据(问题出在字符构造函数中。我需要根据所选字符类从 ClassStats 获取值)?
  2. 我可以用更好的方式存储每个角色类的属性初始值吗?
enum ClassStats {

    Fighter(15,14,12,10,9,10), Rogue(12,12,16,14,10,10), Mage(10,10,14,16,14,10), Cleric(12,14,12,13,16,14);

    private int strength, constitution, dexterity, intelligence, wisdom, charisma;

    ClassStats(int str, int con, int dex, int intel, int wis, int cha){
        strength = str;
        constitution = con;
        dexterity = dex;
        intelligence = intel;
        wisdom = wis;
        charisma = cha;
    }

    int getStrength(){
        return strength;
    }

    int getConstitution(){
        return constitution;
    }

    int getDexterity(){
        return dexterity;
    }

    int getIntelligence(){
        return getIntelligence();
    }

    int getWisdom(){
        return wisdom;
    }

    int getCharisma(){
        return charisma;
    }

}
public class Character {

private String Name;
private String Class;
private int Level;
private long XP;
private int HP;
private int currentHp;
/*private int BAB; /*Base attack bonus*/

private int Strength;
private int Constitution;
private int Dexterity;
private int Intelligence;
private int Wisdom;
private int Charisma;

Character(String name, String chracterClass){

    Name = name;
    Class = chracterClass;
    Level = 1;
    XP = 0;
    HP = CharacterUtil.setHP(chracterClass);
    currentHp = HP;
    ClassStats cs = null;
    Strength = cs.getStrength();
    System.out.println("Strength: " + Strength);
    Constitution = cs.getConstitution();
    Dexterity = cs.getDexterity();
    Intelligence = cs.getIntelligence();
    Wisdom = cs.getWisdom();
    Charisma = cs.getCharisma();

}

}

最佳答案

A) 您可以将枚举传递到构造函数中。

B) 或者,您可以通过 enumClass.valueOf(strValue) 从字符串值获取枚举。

C) 或者,更好的是,您可以有一个工厂类来为您生成不同的默认字符。

此外,这两行没有意义:

ClassStats cs = null;
Strength = cs.getStrength();

如果将其设置为 null,则无法调用该对象的方法。这本质上是您可以从构造函数中传递的字符串表示形式解析枚举的地方,或者如果您选择选项 2,您将已经有一个 ClassStats 变量。

关于Java 从枚举中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33302041/

相关文章:

java - 如何使用 JPA 2 和 QueryDSL 高效地获取数千条数据库记录?

Java 与 Sublime Text - 扫描仪无法工作?

Java 列表作为第一项应始终具有特定值

c++ - 枚举的使用 - 全局和局部

c# - Enum 的顺序为什么(以及如何)影响 ToString 值?

c# - 对 DropdownList 使用枚举 : Missing a using directive or assembly reference

java - Libgdx/Java : After converting GPS to pixelcoordinates, 路由旋转90°

java - 如何获取具有特定类型参数的泛型类的 `Class<T>` 对象的引用?

c++ - 如何正确使用 C++ 强类型枚举?

java - Android(Java)枚举空指针错误