我想创建一个具有值的枚举类型,并且可以从该值转换为反之亦然(基本上,枚举将是该值的类型安全别名,并且会提高代码的可读性)。
我需要这个,因为我正在处理低级、嵌入式的东西,以及写寄存器等等。很多时候,寄存器的几个位具有特殊含义。就像一个寄存器的第 10-11 位是活动的 CYCCNT “00 - CYCCNT_24, 01 - CYCCNT_26, 11 - CYCNT_28”
现在我想做这样的事情:
void setActiveCYCCNT(CYCCNT_ENUM newvalue)
{
Target.writeRegister(ADDRESS, newvalue.value());
}
CYCCNT_ENUM getActiveCYCCNT()
{
return CYCCNT_ENUM.fromValue(Target.readRegister(ADDRESS));
}
我想做这样的事情(但在许多层面上语法不正确):
似乎静态成员无法访问 T。我不确定为什么会这样,java 不是为每个引用的泛型类型生成一个新类吗?其次,java似乎不支持泛型枚举?
public enum ConvertableEnum<T> {
private static Map<T, ConvertableEnum<T>> map = new HashMap<T, ConvertableEnum<T>>();
T value;
public ConvertableEnum(T t)
{
this.value = t;
map.put(t, this);
}
public static ConvertableEnum<T> fromValue(T t)
{
return map.get(t);
}
}
在这之后可以做:
public enum CYCCNT : ConvertableEnum<int>
{
CYCCNT_24(0x00), CYCCNT_26(0x01), CYCCNT_28(0x03);
}
并使用它。
我的问题是如何在语法不正确的代码中实现我想要实现的目标?
感谢您的帮助,axos88