我想要一个模拟 EnumMap 的类,但存储 int 值而不是某种对象。现在显然你可以制作一个映射到整数的 EnumMap,但如果可以的话,我想避免很多自动装箱。
所以我想要这样的课程:
public class EnumIntAttributeMap
{
enum Attribute
{
Height, Weight;
}
private final int[] values;
public EnumIntAttributeMap()
{
this.values = new int[Attribute.values().length];
}
public int getValue(Attribute a)
{
return this.values[a.ordinal()];
}
public void setValue(Attribute a, int value)
{
this.values[a.ordinal()] = value;
}
}
除了我想制作一个在所有枚举中通用的版本。现在,由于 .values() 和 .ordinal() 方法是由编译器隐式添加的,因此访问它们的唯一方法似乎是使用反射,这会消耗我试图通过避免获得的性能提升自动装箱,但也许我缺少一些东西。
有什么想法吗?
编辑:
我认为我最初的问题不清楚。我想要一个接受(作为通用参数)枚举的类,然后可以使用相同的操作。
所以我可以将它与任何类型的枚举一起使用,而无需每次都为每种枚举编写类。如:
enum Attribute { Height, Weight }
enum AbilityScore {Str, Dex, Con, Int, Wis, Cha}
IdealClass<Attribute> attributeVersion;
IdealClass<AbilityScore> abilityScoreVersion;
等等。