当我存储配置枚举时,只要它与特殊的枚举类型MyEnum
类型绑定,这很容易:
void storeMyEnumValue(MyEnum value) {
String valueString = value.name();
// Store valueString somewhere
}
MyEnum loadMyEnumValue(MyEnum fallbackValue) {
// Load valueString from somewhere
try {
return MyEnum.valueOf(valueString);
} catch (Exception e) {
return fallbackValue;
}
}
但是,如果我想概括一下并为任何类型的枚举设置一组store
/ load
方法会怎样?
void storeAnyEnumValue(??? value) {
// The same as before
}
??? loadAnyEnumValue(??? defaultValue) {
// The same as before
}
正如您所看到的,问题主要是如何处理类型枚举常量的对象"总的来说。
答案 0 :(得分:2)
对于商店方法,您只需使用Enum<?>
的实例即可。这里的类型变量没有任何优势。
void storeAnyEnumValue(Enum<?> value) {
// The same as before
}
对于load方法,您希望返回类型与defaultValue
的类型相同,因此您需要一个类型变量:
<E extends Enum<E>> E loadAnyEnumValue(E defaultValue) {
// The same as before
}
答案 1 :(得分:1)
怎么样?
void storeAnyEnumValue(Enum<?> value) {
// The same as before
}
<T extends Enum<T>> T loadAnyEnumValue(T defaultValue) {
// Not exactly the same as before
}