web-dev-qa-db-ja.com

Java Lambdaメソッド参照が機能しない

私の元のコードはこれです:

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

// somewhere else in the program:
setOnMouseClicked(event -> SomeClass.onClicked(event));

しかし、IntelliJは「メソッド参照に置き換えることができる」と言っていますが、その方法がよくわかりません。私はこれをやろうと思った:

setOnMouseClicked(event -> SomeClass::onClicked);

しかし、それは「voidは関数型インターフェースではない」と私に伝えますが、私は何も返したくありません。ハンドラーを実行したいだけです。どうすればこれを修正できますか?

ありがとうございました!

17
Mayron

ラムダ式をメソッド参照と混合しています。

変化する

setOnMouseClicked(event -> SomeClass::onClicked);

setOnMouseClicked(SomeClass::onClicked);
40
Eran