从Java7迁移到Java8期间使用枚举时发生遵从错误
我正在将java应用程序从Java7迁移到Java8。现有的代码可以用Java7编译并运行良好,但不能用Java8。它基本上给了我这个错误: 不兼容类型:推理变量E具有不兼容的上限java.lang.Enum 以下是导致编译错误的方法:从Java7迁移到Java8期间使用枚举时发生遵从错误,java,java-8,Java,Java 8,我正在将java应用程序从Java7迁移到Java8。现有的代码可以用Java7编译并运行良好,但不能用Java8。它基本上给了我这个错误: 不兼容类型:推理变量E具有不兼容的上限java.lang.Enum 以下是导致编译错误的方法: public static <E extends Enum<E>> E checkAndConvertEnum(Class<E> enumClass, String valueToConvert) { checkMan
public static <E extends Enum<E>> E checkAndConvertEnum(Class<E> enumClass, String valueToConvert)
{
checkMandatory(Class.class, enumClass);
Pair<E, ClassB> value= checkAndConvertEnumInternally(enumClass, valueToConvert);
}
这方面的任何帮助都会有所帮助。提前谢谢 根据Java惯例,
T型
电子元件
K键
N-数
V值
所以这里任何扩展枚举的类都应该是E类型。最好使用通配符。
这可能对你有帮助
请发布完整的代码。这是唯一发生错误的地方,并且有不同的方法一起做其他事情。我假设问题出在赋值上,但为了对赋值进行评论,我们需要知道该语句中的每个名称所指的是什么,我们尤其需要checkandconvertenum的精确签名。另外,ClassB的类型层次结构也可能是相关的。嗨,Stephan,我在内部添加了CheckAndConvertEnum的代码段,ClassB只是一个接口。请让我知道这是否有助于确定根本原因
private static <E extends Enum<E>> Pair<E, ClassB> internCheckAndConvertEnum(Class<E> enumClass,
String valueToConvert) {
if (null != valueToConvert) {
// --- First try it with the enum-literal
try {
E result = Enum.valueOf(enumClass, valueToConvert);
if (null != result) {
return new Pair<E, ClassB>(result, null);
} // --- end_if
} catch (Exception ignore) {
}
return new Pair<E, ClassB>(null, new Incident(GlobalErrCodes.CANNOT_CONVERT_ENUM,
enumClass.getSimpleName(), valueToConvert));
}