2014-12-03 212 views
0

我正在做一个口袋妖怪类型的枚举。每种类型都具有强度,弱点和免疫力类型。我试图将类型传递到不同的数组中,这些数组存储每种类型的优点和缺点。如何将数组传递给枚举中的构造函数?

我知道我可以定义数组作为

int [] x = {1, 2, 3, 88}; 

而且我试过同为传递一个arrray: -

// For the sake of simplicity, all types have the same parameters for now... 
    public enum Type { 

    NORMAL ({Type.STEEL, Type.PHYSIC}, {Type.FIGHTING, Type.POISON}, {Type.GHOST}), 
    FIGHTING ({Type.STEEL, Type.PHYSIC}, {Type.FIGHTING, Type.POISON}, {Type.GHOST}), 
    FLYING ({Type.STEEL, Type.PHYSIC}, {Type.FIGHTING, Type.POISON}, {Type.GHOST}), 
    POISON ({Type.STEEL, Type.PHYSIC}, {Type.FIGHTING, Type.POISON}, {Type.GHOST}), 
    GROUND ({Type.STEEL, Type.PHYSIC}, {Type.FIGHTING, Type.POISON}, {Type.GHOST}), 
    ROCK ({Type.STEEL, Type.PHYSIC}, {Type.FIGHTING, Type.POISON}, {Type.GHOST}), 
    BUG ({Type.STEEL, Type.PHYSIC}, {Type.FIGHTING, Type.POISON}, {Type.GHOST}), 
    GHOST ({Type.STEEL, Type.PHYSIC}, {Type.FIGHTING, Type.POISON}, {Type.GHOST}), 
    STEEL ({Type.STEEL, Type.PHYSIC}, {Type.FIGHTING, Type.POISON}, {Type.GHOST}), 
    FIRE ({Type.STEEL, Type.PHYSIC}, {Type.FIGHTING, Type.POISON}, {Type.GHOST}), 
    WATER ({Type.STEEL, Type.PHYSIC}, {Type.FIGHTING, Type.POISON}, {Type.GHOST}), 
    GRASS ({Type.STEEL, Type.PHYSIC}, {Type.FIGHTING, Type.POISON}, {Type.GHOST}), 
    ELECTRIC ({Type.STEEL, Type.PHYSIC}, {Type.FIGHTING, Type.POISON}, {Type.GHOST}), 
    PHYSIC ({Type.STEEL, Type.PHYSIC}, {Type.FIGHTING, Type.POISON}, {Type.GHOST}), 
    ICE ({Type.STEEL, Type.PHYSIC}, {Type.FIGHTING, Type.POISON}, {Type.GHOST}), 
    DRAGON ({Type.STEEL, Type.PHYSIC}, {Type.FIGHTING, Type.POISON}, {Type.GHOST}), 
    DARK ({Type.STEEL, Type.PHYSIC}, {Type.FIGHTING, Type.POISON}, {Type.GHOST}), 
    FAIRY ({Type.STEEL, Type.PHYSIC}, {Type.FIGHTING, Type.POISON}, {Type.GHOST}); 

    private Type [] weak, strong, ineffective; 

    Type (Type [] weak, Type [] strong, Type [] ineffective) { 

     this.weak = weak; 
     this.strong = strong; 
     this.ineffective = ineffective; 

    } 

} 

我的IDE,BlueJ的,说:“非法启动表达”。

如果不是这样,我怎么能将数组传递给枚举的构造函数?

+1

你可能应该看一下'EnumSet' – 2014-12-03 06:59:06

回答

2

你必须使用new

new Type[]{Type.STEEL, Type.PHYSIC} 
1

这是由@Ruslan Ostafiychuk说,但我想澄清他是什么意思。将这些集合定义为Type []将解决您的问题。要做到这一点,你需要更改您的代码:

// For the sake of simplicity, all types have the same parameters for now... 
    public enum Type { 

    NORMAL (new Type[] {Type.STEEL, Type.PHYSIC}, new Type[] {Type.FIGHTING, Type.POISON}, new Type[] {Type.GHOST}), 
    FIGHTING (new Type[] {Type.STEEL, Type.PHYSIC}, new Type[] {Type.FIGHTING, Type.POISON}, new Type[] {Type.GHOST}), 
    FLYING (new Type[] {Type.STEEL, Type.PHYSIC}, new Type[] {Type.FIGHTING, Type.POISON}, new Type[] {Type.GHOST}), 
    . 
    . 
    . 
    FAIRY (new Type[] {Type.STEEL, Type.PHYSIC}, new Type[] {Type.FIGHTING, Type.POISON}, new Type[] {Type.GHOST}); 

    private Type [] weak, strong, ineffective; 

    Type (Type [] weak, Type [] strong, Type [] ineffective) { 

     this.weak = weak; 
     this.strong = strong; 
     this.ineffective = ineffective; 

    } 

} 

此外,触及enumsets的角度来看,它似乎像使用这可以帮助您组织的发展。我不太熟悉enumsets,但我会采取一个刺戳你如何使用它。例如:

EnumSet<Type> normal = EnumSet.of(Type.NORMAL.weak, type.NORMAL.strong, type.NORMAL.ineffective); 
相关问题