为项目分配枚举

时间:2015-03-23 22:43:43

标签: java enums

该项目的一些背景:我正在尝试制作一个空间/科幻战斗模拟游戏,桌面RPG风格的骰子机制在复杂程度上达到11,但仍然对于在引擎盖。我目前正在使用星球大战传奇版战斗规则作为基础。


目前我正试图想出一种方法来为车辆分配特征。(可能存储为每辆车的类)每个特征都是一个枚举,因此它可以存储多条信息。以下是我对大小类别的代码:

public enum VehicleSize {
    LARGE(1,"Speeder bike",5),HUGE(2,"Small Fighter",10),GARGANTUAN(5,"Tank, Medium Fighter",20),COLOSSAL(10,"Imperial Walker, Light Freighter",50),
    COLLOSSALfrigate(10,"Corvette, Frigate",100),COLLOSSALcruiser(10,"Imperial-class Star Destroyer, Cruiser",200),
    COLLOSSALstation(10,"The Death Star, Space Station",500);

    private final int refMod;
    private final int threshMod;
    private final String desc;

    VehicleSize(int reflexModifier,String example,int thresholdModifier)
    {
        refMod = reflexModifier;
        desc = example;
        threshMod = thresholdModifier;
    }

    public int getRefMod() {
        return refMod;
    }
    public String getDesc() {
        return desc;
    }
    public int getThreshMod() {
        return threshMod;
    }

}

我的问题是:如何以这样的方式创建车辆配置文件,以便将此类和类似的枚举分配为特征?

2 个答案:

答案 0 :(得分:0)

要将其添加到类中,您可以像任何用户定义的类型一样使用它。

public class MyClass {
    private MyEnum myEnum;
}

答案 1 :(得分:0)

对于几乎所有目的,类型为枚举类的字段与任何其他对象类型的字段(如Integer或String)没有区别。

创建私有字段,添加getter和setter,或者如果字段是final(可能在您的情况下,因为车辆实例无法更改其类型),请将其添加为构造函数参数并移除设置器。

public class Vehicle {
    private final VehicleSize vehicleSize;
    // other fields
    public Vehicle(VehicleSize vehicleSize) {
        this.vehicleSize = vehicleSize;
    }
    public VehicleSize getVehicleSize() { 
        return vehicleSize;
    }
    // rest of class
}

枚举没有什么神秘之处,除了在编译时知道它的不同实例的数量(还有一些东西,但没什么可怕的)。