gpt4 book ai didi

java - 在 intellij 中显示流管道的推导类型

转载 作者:行者123 更新时间:2023-11-30 08:35:04 25 4
gpt4 key购买 nike

IntelliJ 理念 2016

有没有办法弄清楚在 intellij 中推导出什么泛型类型?我使用更大的流管道,有时会遇到类似 This method cannot be used in a static context 这样误导性的错误消息使用这样的分组收集器时:

public interface MyInterface<T extends Number>{
String str();
}

public final class MyInterfaceUtils{
public static <T extends Number> Collection<MyInterface<T>> myInterfaces(MyInterface<T> mi){
//impl goes here
}
}

现在管道本身:

Collection<MyInterface<Integer>> col;
//...
Map<String, Collection<MyInterface<Integer>>> m = col.stream()
.flatMap(mi -> MyInterfaceUtils.muInterfaces(mi).stream())
.collect(groupingBy(MyInterface::str)); //prints error:
//Non-static method cannot be referenced from a static context

但是当我用 Map<String, List<MyInterface<Integer>>> m 替换声明时它工作正常。我知道泛型类型不是以这种方式继承的,但是错误消息有点误导,所以我不得不花一些时间弄清楚发生了什么。

也许有办法在 intellij 中处理此类错误消息?

最佳答案

错误信息具有误导性。这里的错误是分组将返回 Map<String, List<...但不是 Map<String, Collection<...如此变化CollectionList解决了编译问题。

关于如何知道流管道操作的类型。通常我将光标放在流管道函数和 extract variable 上这给了我类型的变量。

关于java - 在 intellij 中显示流管道的推导类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38454649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com