A part en ce qui concerne les nouvelles API fonctionnelles (stream) ou propres (Optional) ajoutées au JDK 1.8 core, et les nouveaux contrôles (TextFlow) ou API (accessiblité, Dialog) ajoutés dans les divers sous-versions de JavaFX 8, y a pas de limitation particulières. Une expression lambda ou une référence de méthode utilisée dans un listener est totalement l'équivalent d'une classe anonyme.
Ces 4 bouts de code sont grosso-modo équivalents :
1 2 3 4 5 6
| button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Foo!");
}
}); |
button.setOnAction((ActionEvent actionEvent) -> System.out.println("Foo!"));
button.setOnAction(actionEvent -> System.out.println("Foo!"));
1 2 3 4 5
| private void foo(ActionEvent actionEvent) {
System.out.println("Foo!");
}
button.setOnAction(this::foo); |
On peut donc s'y retrouver assez facilement en lisant bien la manière dont les lambda ou les références sont écrites et en les retransformant en méthodes anonymes. Et en lisant bien la javadoc des méthodes aussi pour voir quels types sont passés en paramètres.
Au pire des cas, un petite question sur le forum demandant des éclaircissements...
Partager