Java用lambda表达式替换方法

4
我有以下方法:
private void initializeMoveOnClick(final Group window){
    window.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent mouseEvent) {
            //do some stuff
        }
    });
}

如何使用lambda表达式替换被覆盖的handle方法声明?

2个回答

5

你主要有两种方法来做到这一点:

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

并且:

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

3

由于EventHandler是一个只有一个方法的接口,你可以使用lambda表达式来替换匿名类:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接