Java, события в javaFX

В документации Java и в книгах написано, что для наблюдения за событиями надо создать соответствующий класс и зарегистрировать его. Как то так:

 btn.setOnMouseClicked(new EventHandler<MouseEvent>() {

            @Override
            public void handle(ActionEvent event) {
                System.out.println("Hello World");
            }

        });

Но до того как я все это прочитал я создал и зарегистрировал метод и все было хорошо:

btn.setOnMouseClicked(this::clicked);

// и где то в классе
private void clicked(MouseEvent e) {
    System.out.println("Hello World");
}

И еще в методе Node#setOnMouseClicked:

public final void setOnMouseClicked(EventHandler<? super MouseEvent> value)

По моему это означает передать в параметр объект типа EventHandler<MouseEvent>.

1) Если это так, почему передача метода в параметр не вызвало ошибку?
2) Какой вариант использовать и зачем создавать отдельный класс, если можно и методом обойтись?

Спасибо


Ответы (0 шт):