Java 在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

IntelliJ idea 2016

有没有办法找出intellij中推导出的泛型类型?我使用的是一种更大的流管道,有时我会遇到这样的误导性错误消息,如
,当使用这样的分组收集器时,此方法不能在静态上下文中使用:

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。