Java replacement method using lambda

I have the following method

private void initializeMoveOnClick(final Group window){
    window.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent mouseEvent) {
            //do some stuff
        }
    });
}

How do I replace a replacement declaration of an overridden handle method with a lambda expression?

+4
source share
2 answers

You have basically two ways to do this:

private void initializeMoveOnClick(final Group window){
    window.addEventFilter(MouseEvent.MOUSE_CLICKED, e -> runSomeMethod());
}

and

private void initializeMoveOnClick(final Group window){
    window.addEventFilter(MouseEvent.MOUSE_CLICKED, this::eventFilter);
}
private void eventFilter(MouseEvent e) {
    //do some stuff
}
+5
source

Since EventHandlerthis is an interface with a single method, you can replace the anonymous class with a lambda expression as follows:

private void initializeMoveOnClick(final Group window){
    window.addEventFilter(MouseEvent.MOUSE_CLICKED, (mouseEvent) -> {});
}
+3
source

Source: https://habr.com/ru/post/1533026/


All Articles