从Java7迁移到Java8期间使用枚举时发生遵从错误

从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

我正在将java应用程序从Java7迁移到Java8。现有的代码可以用Java7编译并运行良好,但不能用Java8。它基本上给了我这个错误:

不兼容类型:推理变量E具有不兼容的上限java.lang.Enum

以下是导致编译错误的方法:

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));
}