Les nouveautés du JDK 1.8
Les nouveautés
Lambdas & collections
On a pu voir la puissance des lambdas, mais si elle ne peuvent être utilisés dans les collections, ça ne sert à rien.
Le problème: les collections utilisent des interfaces, et si l'on touche aux interfaces, tout le code qui utilisait celles-ci ne fonctionnerait plus.
La question qui se pose, c'est de comment changer les collections pour implanter les lambdas tout en gardant l'intéropérabilité de java et ses anciennes versions.
Plusieurs choix on été étudiés :
- Ajout de méthodes statiques dans les collections. Mais ne respect pas la doctrine du langage object de java
- Ajout de nouvelles interfaces spécifiques aux lambdas, par exemple Set2, List2, etc... Aucune utilité pour le langage.
- Ajout de méthodes dans les interfaces
Les traits
Oui, vous ne rêvez pas, nous allons bien ajouter des méthodes dans les interfaces. Prennons pour exemple l'interface Iterable :

Dans la version 7 de java, L'interface Iterable avait qu'une seul méthode, iterator(), qui renvoyait un iterator
On peut voir un exemple d'utilisation de cette méthode par défaut ci-dessous :

A gauche la version 7 de java nous donnait la possibilité de faire une boucle foreach avec un for. Dans la partie de droite, on utilise le trait forEach de l'interface Iterable pour afficher tout les éléments de la liste.