繁体   English   中英

实现采用枚举的接口的类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM