想象一下我有这个:
class MyClass<E extends Enum<E>> {
private E myEnum;
public MyClass(E myEnum) {
this.myEnum = myEnum;
}
public E getMyEnum() { return myEnum; }
public void setMyEnum(E e) { myEnum = e; }
}
现在我有这些:
Enum<?> someRandomEnum = // Retrieved from somewhere
MyClass<?> enumClassA = new MyClass<>(someRandomEnum); // Cannot infer type arguments
MyClass<?> enumClassB = new MyClass<Object>(someRandomEnum); // Obviously Object is not subclass of an enum
MyClass<?> enumClassC = new MyClass<? extends Enum<?>>(someRandomEnum); // Cannot instantiate the type MyClass<? extends Enum<?>>
我尝试了很多方法来转换这个,但是我无法将 Enum<?>
转换为 MyClass<?>
。有人知道如何做吗?
MyClass<?>
的实例不能是Enum<?>
的实例,因此进行强制类型转换没有意义。 - khelwoodMyClass<E extends Enum<E>>
吗?你可以只声明为MyClass<E extends Enum<?>>
吗? - Andy TurnerEnum<?>
强制转换为MyClass<?>
,MyClass
存储了特定类型的枚举值,但对于这个特定的用例,我想放宽类型安全性,因为我知道它不会抛出ClassCastException
。 - JaiEnumSet
和EnumMap
这样的东西所覆盖了吗? - Powerlord