我不是100%确信这是一个好主意,但我今天碰到了一些目前实现的代码:
class MyWidget <T extends Enum<T> > {
MyWidget(Map<T, Integer> valueMap) {
mValueMap = valueMap;
}
Map<T, Integer> mValueMap;
}
Run Code Online (Sandbox Code Playgroud)
其中,MyWidget然后提供使用方法mValueMap转换传入的Enum从一个到/ Integer.
我正在考虑做的是试图重构这个,以便我宣布我的枚举:
interface MyInterface {
public Integer getValue();
}
enum MyEnum implements MyInterface {
foo, bar;
public Integer getValue() {
return ordinal();
}
}
Run Code Online (Sandbox Code Playgroud)
然后我就可以重MyWidget写成看起来像这样模糊的东西:
public class MyWidget<T extends Enum<T> extends MyInterface> {
...
}
Run Code Online (Sandbox Code Playgroud)
然后就可以getValue()从内部的MyInterfaceon T-type对象调用该方法MyWidget.当然,问题是" <T extends Enum<T> extends MyInterface>"不是有效的语法.有什么办法可以解决这个问题吗? …