Bonjour à tous,
la dernière beta du JDK 21 ajoute de nouvelles interfaces, les sequenced collections, à l'API des collections
https://openjdk.org/jeps/431
Par exemple, maintenant, l'interface commune de LinkedHashSet et List est SequencedCollection et non plus Collection.
Malheureusement, sur plusieurs de mes codes, l'inférence au lieu d'inférer Collection maintenant infère SequencedCollection et si une méthode prend en paramètre une liste de ces trucs là, cela ne compile plus.
Par exemple,
var list = List.of(new LinkedHashSet<String>(), List.of("foo"));
List<Collection<String>> list2 = list;
avec le JDK 20, le type de "list" est List<Collection<String>> et avec le JDK 21 c'est List<SequencedCollection<String>>, donc la deuxième ligne ne compile plus avec le JDK 21.
Maintenant, je me demande si je suis le seul à écrire ce genre de code, auquel cas je peux le changer :) ou alors il y a plein de codes comme cela, auquel cas il faut retirer l'implantation actuelle des sequenced collections du JDK et venir avec une autre implantation.
Donc, qui veut bien utiliser la dernière version du JDK 21 sur son code et voir si cela compile ou pas ?
https://jdk.java.net/21/
Pour référence, voilà le mail que j'ai envoyé sur la mailing list officielle
https://mail.openjdk.org/pipermail/core-libs-dev/2023-April/105069.html
Rémi