Java 在intellij中显示流管道的导出类型
IntelliJ idea 2016 有没有办法找出intellij中推导出的泛型类型?我使用的是一种更大的流管道,有时我会遇到这样的误导性错误消息,如Java 在intellij中显示流管道的导出类型,java,intellij-idea,java-8,java-stream,Java,Intellij Idea,Java 8,Java Stream,IntelliJ idea 2016 有没有办法找出intellij中推导出的泛型类型?我使用的是一种更大的流管道,有时我会遇到这样的误导性错误消息,如,当使用这样的分组收集器时,此方法不能在静态上下文中使用: public interface MyInterface<T extends Number>{ String str(); } public final class MyInterfaceUtils{ public static <T extends
,当使用这样的分组收集器时,此方法不能在静态上下文中使用:
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
}
}
公共接口MyInterface{
字符串str();
}
公共期末班{
公共静态集合MyInterface(MyInterface mi){
//impl在这里
}
}
现在管道本身:
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
col;
//...
Map m=列流()
.flatMap(mi->MyInterfaceUtils.muInterfaces(mi.stream())
.collect(groupingBy(MyInterface::str))//打印错误:
//无法从静态上下文引用非静态方法
但是,当我用Map m
替换申报时,它工作正常。我知道泛型类型不是以这种方式继承的,但是错误消息有点误导,所以我不得不花一些时间弄清楚到底发生了什么
也许有一种方法可以处理intellij中的此类错误消息?错误消息具有误导性。这里的错误是分组将返回MapI不知道这在IntelliJ中是否有效,但在所有其他IDE中,我只是删除m
的声明类型,导致编译器错误,并告诉IDE创建该变量,该变量以使用推断类型创建的m
结束。但我知道你的问题;它比这更深。即使逗号或大括号放错了位置,也会导致最奇怪的泛型错误消息,而不是简单的原因。Atm这适用于所有没有解决方案的编译器/IDE。