[英]A class implementing an interface that takes an enum
所以,假设我有一个简单的枚举和一个使用它的类:
enum ThingType { POTATO, BICYCLE };
class Thing {
public void setValueType(ThingType value) { ... }
public ThingType getValueType() { ... }
}
但是,实际上,我有很多实现 setValueType 的不同类,每个类都有不同类型的枚举。 我想创建一个这些类可以使用泛型支持 setValueType 和 getValueType 的接口:
interface ValueTypeable {
public Enum<?> getValueType(); // This works
public <T extends Enum<T>> setValueType(T value); // this fails horribly
}
我无法更改类模型,因为这些类是从 XML 模式 (JAXB) 自动生成的。 我觉得我没有把枚举和泛型结合起来。 这里的目标是我希望能够允许用户从枚举列表中进行选择(因为我在运行时已经知道类型)并在特定类中设置值。
谢谢!
您是否尝试过参数化接口本身。 喜欢:
class Thing<E extends Enum<? extends E>> {
public E getValueType();
public void setValueType(E value);
}
然后您让子类扩展具有正确类型的子类:
class SomeSubClass implements Thing<ThingType> { ... }
枚举用于当您拥有一组固定的枚举时。 当您说每个实现都有自己的实现时,您就不再有固定的集合,并且您尝试使用枚举的方式与您的需求不符。
您可能对 Java 能够拥有抽象枚举的请求感兴趣。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.