Hello,
les deux dernières sont ce qu'on appelle des expressions lambda. Au final au runtime, la variable contient un genre de simili d'instance d'un simili de classe, qui implémente l'interface Consumer/Supplier/Function.
Fondamentalement ça réagit en tout point comme un objet normal, c'est juste que quand tu demandes quelle est la classe de cet objet, tu obtiens des résultats un peu nouveaux avec Java 8. Notamment sur cette classe, isSynthetic renvoie true. Bon courage avant Java 8 pour écrire un programme Java qui produise ça.
La première n'est pas une lambda mais une référence de méthode. Peu importe, au runtime ça fait pareil.
Essaie donc ce code :
System.out.println(consumer.getClass());
et ne cherche pas trop longtemps à y trouver un sens. Java a inventé une convention qui lui permet de représenter des objets produits par expression lambda.
Partager