我正在研究的项目中有此方法(略):
public <T> T query(
final Extractor<T> extractor, final List result) {
//...
return extractor.extract(result)
//...
}
提取器定义为:
public interface Extractor<T> {
T extract(List<Map<String, Object>> result);
}
在Eclipse中没有任何错误,但是IntelliJ拒绝使用
Incompatible types: Required: T Found: Object
编译该类,唯一的方法是如果我将返回值强制转换为T或返回Object,而我无法弄清楚为什么它会失败。 最佳答案
您需要将type argument添加到参数中:
query(final Extractor<T> extractor, final List<Map<String, Object>> result){
由于类型不匹配(Raw Type)而导致的错误消息。这是文档对原始类型的评价: