【发布时间】:2016-02-04 07:50:45
【问题描述】:
看this的回答。一切都很好,除了:
public <E extends Enum<E> & MyInterface> E getParametrizedEnum() {
String someString = "..."
return MyEnum.valueOf(someString); //compile error here
}
Intellij idea 告诉我“必需的 E,找到 com.mypackage.MyEnum”。
必须是这样的:
public <E extends Enum<E> & MyInterface> E getParametrizedEnum() {
String someString = "..."
return (E) MyEnum.valueOf(someString); //compile error here
}
有没有办法在不强制转换的情况下返回带接口的参数化枚举?
【问题讨论】:
-
请告诉我们
MyEnum -
听起来
MyEnum没有实现MyInterface。但如果是这样,为什么不直接使用MyEnum作为返回类型呢?或者你能返回不同类型的枚举吗? -
请注意,您没有获得此方法的任何类型保证。它的返回值可以分配给任何引用类型而不会出现编译错误:
java.awt.Point p = getParametrizedEnum();请参阅stackoverflow.com/q/338887/3385618
标签: java interface enums type-constraints