Java MessageConverter类型中的方法fromMessage(String,Class)不适用于参数(String,Class)

Java MessageConverter类型中的方法fromMessage(String,Class)不适用于参数(String,Class),java,Java,我有以下Java代码: public abstract class BaseObject implements Serializable { ... } public interface MessageConverter { <T extends BaseObject> T getMessage(String message, Class<T> requiredType); } public abstract class AbstractMessage

我有以下Java代码:

public abstract class BaseObject implements Serializable {
    ...
}

public interface MessageConverter {
    <T extends BaseObject> T getMessage(String message, Class<T> requiredType);
}

public abstract class AbstractMessageConverter implements MessageConverter {
    ...
}

public class WebMessageConverter extends AbstractMessageConverter {
    public <T extends BaseObject> T getMessage(String message, Class<T> requiredType) {
        final T data;
        ...
        return data;
    }
}

public class Utils {
    private static <T> T getItemType(String value, Class<T> requiredType, MessageConverter messageConverter) throws Exception
    {
        if (BaseObject.class.isAssignableFrom(requiredType))
        {
            return (T) messageConverter.getMessage(value, requiredType);
        }
        return (T) toRequiredType(value, requiredType);
    }

    public static <T> T toRequiredType(Object value, Class<T> requiredType)
    {
        final T data;
        ...
        return data;
    }
}
原因:

如何修复此错误?

WebMessageConverter上的签名在声明时需要BaseObject的子类型

UTIL上的签名没有这样的限制,因为它使用了一个普通签名,例如允许使用类。这就是编译器抱怨的原因

要解决此问题,请在UTIL中声明如下方法:

private static <T extends BaseObject> T getItemType(String value, Class<T> requiredType, MessageConverter messageConverter) throws Exception

fromMessage在哪里定义?你是说getMessage吗?我错了,fromMessage在你的类中是getMessageT,Utils不是BaseObject的扩展,试着强制转换它。 The method getMessage(String, Class<T extends BaseObject>) in the type MessageConverter is not applicable for the arguments (String, Class<T>)
private static <T extends BaseObject> T getItemType(String value, Class<T> requiredType, MessageConverter messageConverter) throws Exception