Developpez.com - Rubrique Java

Le Club des Développeurs et IT Pro

Java 7 : Diamond syntax et constructeurs simplifiés pour la généricité

Par Frédéric Martini

Le 2007-12-16 18:32:37, par vbrabant, Expert éminent sénior
27/08/2009 :
C'est fait : cette proposition a été intégré dans Java 7 sous le nom de "diamond syntax". Plus d'information sur http://blog.developpez.com/adiguba/p...iamond-syntax/

16/12/2007 :

Neal Gafter et Joshuah Bloch ont proposé lors d'un BOF qui s'est tenu à Javapolis 2007 certains changements au niveau du langage Java qui pourraient être introduits dans le JDK7. Le but ici est de recueillir vos votes et commentaires, de les consolider, et de les remonter à Neal Gafter et Joshuah Bloch.
D'autres JUG répartis un peu partout dans le monde feront de même. Ce qui permettra d'avoir le maximum de retour de la communauté Java.

Ne manquez pas cette chance unique de pouvoir donner votre avis concernant le futur de Java.

Aujourd'hui :
Code :
1
2
3
Map<String, List<String>> 
  anagrams = new HashMap<String, List<String>>();
Demain :
Code :
1
2
Map<String, List<String>> 
  anagrams = new HashMap<>();
  Discussion forum
78 commentaires
  • yann2
    Membre expérimenté
    Bonsoir

    Je suis contre, mon IDE me fait la complétion automatiquement et si l'initialisation ne se fait pas en même temps que la déclaration, l'information portée par <String, List<String>> est pratique.

    yann
  • jibbi
    Membre actif
    Je suis pour, en autant que l'initialisation actuelle reste disponible pour la même raison qu'a invoqué yann2.
  • jowo
    Membre chevronné
    Bonjour,

    J'ai voté pour. Car si j'ai déjà déclaré le type de ma généricité, je ne vois pour quelle raison, je devrais le répéter pour l'instanciation.
  • Napalm51
    Membre averti
    Pour, mais en gardant à l'esprit la première remarque, à savoir que les 2 versions devraient être possible.
  • n!co
    Membre éprouvé
    Voté pour,
    Ca alège le code sans pour autant perdre vraiment de l'information à mes yeux.
    D'autant que si je ne dis pas de bétise, seul l'information sur l'interface est réellement utile dans l'interprétation des générics par le compilateur.
  • adiGuba
    Expert éminent sénior
    Oui pour moi : cela permet d'éviter une répétition inutile...

    Bien sûr quoi qu'il arrive la première syntaxe sera toujours valide (rien que pour assurer la compatibilité ascendante).

    a++
  • bobuse
    Membre actif
    Envoyé par jibbi
    Je suis pour, en autant que l'initialisation actuelle reste disponible pour la même raison qu'a invoqué yann2.
    tout à fait pareil
  • OButterlin
    Modérateur
    pareil, même si ça n'est pas vital...
  • bulbo
    Rédacteur
    Envoyé par yann2
    Bonsoir

    Je suis contre, mon IDE me fait la complétion automatiquement et si l'initialisation ne se fait pas en même temps que la déclaration, l'information portée par <String, List<String>> est pratique.

    yann
    Si tu as un IDE, celui ci t'informe aussi automatiquement si tu essayes de mettre des types incompatibles dans ton ArrayList.

    J'ai voté pour, on ne perd pas d'information et ce n'est pas un sucre syntaxique qui a un cout a l'exécution (comme certains introduit par le passé) il évite juste la répétition d'une info inutile et qui n'était probablement pas utilisée par le compilo qui plus est..

    Bulbo
  • D'un premier abord, ça semble utile, mais ça ne favorise pas l'utilisation d'interfaces...