Java MessageConverter类型中的方法fromMessage(String,Class)不适用于参数(String,Class)
我有以下Java代码: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
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