Java Lambda方法引用不起作用

May*_*ron 17 java lambda intellij-idea java-8 method-reference

我的原始代码是这样的:

private static void onClicked(MouseEvent event) {
    // code to execute
}

// somewhere else in the program:
setOnMouseClicked(event -> SomeClass.onClicked(event));
Run Code Online (Sandbox Code Playgroud)

但IntelliJ说"可以用方法参考替换",我不太清楚该怎么做.我以为我会这样做:

setOnMouseClicked(event -> SomeClass::onClicked);
Run Code Online (Sandbox Code Playgroud)

但后来告诉我"虚空不是一个功能界面",但我不想返回任何东西.我只想要执行处理程序.我怎样才能解决这个问题?

谢谢!

Era*_*ran 39

您正在将lambda表达式与方法引用混合使用.

更改

setOnMouseClicked(event -> SomeClass::onClicked);
Run Code Online (Sandbox Code Playgroud)

setOnMouseClicked(SomeClass::onClicked);
Run Code Online (Sandbox Code Playgroud)

  • @Mayron FIY,IntelliJ可以为您更改带有方法参考的lambda表达式(如果可能的话).只需在表达式上使用alt +输入快捷键 (6认同)