我正在研究的项目中有此方法(略):

   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)而导致的错误消息。这是文档对原始类型的评价:

09-10 22:02