【发布时间】:2017-07-02 20:17:22
【问题描述】:
当我像这样使用 lambda 表达式时总是这样:
.map(obj -> foo.makeSomething(obj))
IntelliJ 建议:“可以用方法引用替换...”。当我尝试时:
.map(Foo::makeSomething)
我得到以下语句:“不能从静态上下文引用非静态方法”。
为什么 Idea 建议我使用不正确的方法参考?
【问题讨论】:
-
它实际上是否建议更换?或者这就是你自己写的?我原以为
foo::makeSomething会起作用。 -
它是
foo::makeSomething。您想在对象 foo 上调用该方法,而不是在类 Foo 上。您也可以让 IntelliJ 为您转换代码(Alt-Enter)。 -
您使用的是哪个版本的 IntelliJ IDEA?
-
@JBNizet TY 为那个捷径——天哪,我这辈子都不知道如何告诉 IJ 去做!它给出的只是一个无用的弹出窗口,甚至更无用的建议去设置与这个确切的代码无关的设置!现在越来越倾向于 Eclipse :( 右键单击选项非常好
标签: java intellij-idea