IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Affichage des résultats du sondage: Etes vous pour ou contre cette proposition ?

Votants
368. Vous ne pouvez pas participer à ce sondage.
  • Pour

    280 76,09%
  • Contre

    88 23,91%
Langage Java Discussion :

JDK 7: Proposition 1 : Constructeurs simplifiés pour la généricité -> Intégrée [Débat]


Sujet :

Langage Java

  1. #21
    Membre actif
    Avatar de bobuse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 232
    Points : 278
    Points
    278
    Par défaut
    J'ai pas tout suivi, mais de toutes façons les Vector c'est mal

  2. #22
    Expert éminent
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Points : 6 566
    Points
    6 566
    Par défaut
    Egalement pour, et pour les mêmes raisons citées précedemment, redondance d'information, mais pour garder les 2 notations

  3. #23
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 838
    Points : 22 846
    Points
    22 846
    Billets dans le blog
    51
    Par défaut
    Oui MAIS quel est l'interet de mettre <> dans l'appel au contructeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Map<String, List<String>> 
      anagrams = new HashMap<>();
    Ceci serait mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Map<String, List<String>> 
      anagrams = new HashMap();
    Pour le reste, l'information type est deja convoye dans la partie gauche de l'affectation.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #24
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut
    Citation Envoyé par bobuse Voir le message
    J'ai pas tout suivi, mais de toutes façons les Vector c'est mal
    Ouais je sais que c'est mal, mais tant que j'ai pas compris à 100% les tenants et aboutissant des synchronized quand il y a des threads de partout (et ya du boulot), je met tout en Vector. Je changerais le jour où j'aurais tout compris.
    En terme de performance, ca change quedalle pour mon projet, comparé aux temps des accès clients/serveur.

  5. #25
    Membre actif Avatar de jibbi
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 165
    Points : 205
    Points
    205
    Par défaut
    Citation Envoyé par bulbo Voir le message
    Même si pour la compatibilité, l'autre écriture est bien nécessaire, je n'arrive pas a voir un cas ou cela aurait un intérêt.

    Tu arriverais a nous filer un exemple ?
    Un des avantages avec les generic c'est qu'on peut connaître le type que contient une Collection au premier coup d'oeil.

    la nouvelle forme présenté permet cela à la déclaration de la Collection:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    List<String> list = new ArrayList<>(5); 
    // pas de problème c'est une list de String
    Et si l'initialisation de la list se fait au milieu du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    List<String> list; // déclaration
     
    [...]
     
    list = new ArrayList<>(5); 
    // ici, faut aller voir la déclaration ou étudier 
    //le code pour connaître le type de la liste.
    Donc pour une initialisation au moment de la déclaration, je suis pour la nouvelle syntaxe. Dans le cas contraire, utiliser la forme actuelle.

    Pourrait-on se fier aux "bonnes pratiques" du programmeur pour respecter cela ? j'en doute, j'apprécierais un warning.

    D'accord je suis peut-être un peu pointilleux, mais je ne pense qu'à vous les correcteurs de Developpez.com

  6. #26
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Je vote pour également.


    Citation Envoyé par adiGuba Voir le message
    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++

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  7. #27
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Voté "pour" pour toutes les raisons évoquées.

    Citation Envoyé par bouye Voir le message
    Oui MAIS quel est l'interet de mettre <> dans l'appel au contructeur.
    Je me pose la même question. Aucun intérêt de toute façon.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  8. #28
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Citation Envoyé par bouye Voir le message
    Oui MAIS quel est l'interet de mettre <> dans l'appel au contructeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Map<String, List<String>> 
      anagrams = new HashMap<>();
    Ceci serait mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Map<String, List<String>> 
      anagrams = new HashMap();

    En effet, c'est clair que je ne vois pas l'intérêt d'ajouter le <> ...
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  9. #29
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    POUR, même si le "<>" me paraît inutile également
    " Jag blev dömd för fildelning och allt jag fick var en sketen t-shirt. " (tankafritt.nu)
    PAS DE REPONSE PAR MESSAGE PRIVE ! Penser au bouton Résolu en bas de la discussion...

  10. #30
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    Je peut etre pas tout compris cependant.

    Il y aurait pas une différence de typage et d'héritage entre l'objet construit et la variable porteuse, dans l'idée du polymorphisme.

    Map<String,Vehicule> map;

    map=new Map<String,Camion>();

    map=new Map<String,Voiture>();

    Camion, et Voiture extends Vehicule;

    et j'ai une méthode do(Map<String,Vehicule>);

    Si j'écris rien, j'ai implicitement, Map<Object,Object> map=new Map<Object,Object>();

    Voilà voilà.

  11. #31
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Map<String, List<String>> 
      anagrams = new HashMap();
    Ce code marche très bien aujourd'hui, en tout cas sur mon PC.... Que faut t-il changer ?

  12. #32
    Membre habitué Avatar de ludosoft
    Homme Profil pro
    Chef de projet technique
    Inscrit en
    Juillet 2002
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2002
    Messages : 99
    Points : 136
    Points
    136
    Par défaut
    Citation Envoyé par bouye Voir le message
    Oui MAIS quel est l'interet de mettre <> dans l'appel au contructeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Map<String, List<String>> 
      anagrams = new HashMap<>();
    Ceci serait mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Map<String, List<String>> 
      anagrams = new HashMap();
    Pour le reste, l'information type est deja convoye dans la partie gauche de l'affectation.
    Je pense qu'il ne faut pas trop en enlever non plus hein... Le fait de mettre "<>" indique clairement à l'oeil que ce n'est pas une "simple HashMap" qui est instanciée.

    Et ça ferait quoi ce code là ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Map 
      anagrams = (Map<String, List<String>>)new HashMap<>();
    Et un d'plus en moins !

  13. #33
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    Milles excuses c'est vrai que les générics n'acceptent pas l'heritage et on ne peut pas faire de polymorphisme avec.

    Snif.

  14. #34
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Citation Envoyé par nicorama Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Map<String, List<String>> 
      anagrams = new HashMap();
    Ce code marche très bien aujourd'hui, en tout cas sur mon PC.... Que faut t-il changer ?
    C'est parce que tu as désactivé les warnings checked/unchecked... alors évidemment...
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  15. #35
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    J'ai voté pour, mais j'ai peur que ça complique encore la prise en main des generics.
    Citation Envoyé par bulbo Voir le message
    Même si pour la compatibilité, l'autre écriture est bien nécessaire, je n'arrive pas a voir un cas ou cela aurait un intérêt.
    Tu arriverais a nous filer un exemple ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Map<String, ? extends Collection<? extends Image>> map;
    map = new HashMap<String, Set<BufferedImage>>();
    Il faut préciser le type de la Map, ce qui est normal, mais qui n'est pas évident à comprendre au début.

    Mais je vote pour.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  16. #36
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par nicorama Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Map<String, List<String>> 
      anagrams = new HashMap();
    Ce code marche très bien aujourd'hui, en tout cas sur mon PC.... Que faut t-il changer ?
    Citation Envoyé par natha Voir le message
    C'est parce que tu as désactivé les warnings checked/unchecked... alors évidemment...
    +1

    Actuellement ce code génère un warning, qui est un peu inutile dans ce cas précis. Pourtant la solution de désactiver les warnings checked/unchecked n'en est pas une car il y a d'autre warning qu'il faut conserver car il révèle un problème réel.

    Pour moi cette proposition est une correction d'une "erreur" des Generics de Java 5.0 qui aboutissent à une syntaxe inutilement lourde...



    Citation Envoyé par Alec6 Voir le message
    Milles excuses c'est vrai que les générics n'acceptent pas l'heritage et on ne peut pas faire de polymorphisme avec.
    Oui on peut, mais pas comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Map<String,Vehicule> map = new HashMap<String,Camion>();
    Cela ne marche pas car les types ne correspondent pas, et c'est logique car tu pourrais faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    map.put("Clio", new Voiture());
    Tu ajoutes une voiture dans une liste de camion


    En fait il faut faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Map<String,? extends Vehicule> map = new HashMap<String,Camion>();
    Et avec cette syntaxe certaine méthode te sont interdite car tu ne connais pas le type précis de Vehicule. ainsi tu ne peut pas faire de put() mais tu peux consulter les valeurs comme s'il s'agissait de Vehicule


    a++

  17. #37
    Membre averti

    Profil pro
    Coach Agile
    Inscrit en
    Décembre 2005
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Coach Agile

    Informations forums :
    Inscription : Décembre 2005
    Messages : 316
    Points : 371
    Points
    371
    Par défaut
    Je vote pour, tant que la version actuelle continue d’être exploitable.
    Dans certaines situations déjà citées, je la trouve plus claire.

    Par contre, je dois partager le scepticisme de mes camarades vis-à-vis de l’utilité du <>.
    Lorsque l’instanciation est directement rattachée à la déclaration, il n’y a pour moi pas de risque de méprise.
    Lorsqu’elles sont séparées, je me rabattrai de toute façon sur la notation actuelle.

  18. #38
    Membre habitué Avatar de cysboy
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 221
    Points : 168
    Points
    168
    Par défaut
    J' ai voté pour !
    agiGuba à écrit :
    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).
    Il a tout dit !

  19. #39
    Membre du Club
    Inscrit en
    Novembre 2003
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 40
    Points : 68
    Points
    68
    Par défaut Pour
    Je suis pour et souhaite aussi que les deux syntaxes restent disponible...
    Si cela est _impossible_... (Pas de raison, mais...) J'accepte quand meme, vu que le generique et l'instance ne sont que repetition de toutes facons...

  20. #40
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 552
    Points : 15 463
    Points
    15 463
    Par défaut
    Je suis également pour et ne vois pas non plus l'interet du <>, vu que la généricité est seulement un sucre syntaxique.

Discussions similaires

  1. JDK 7: Proposition 9 : Notation de tableau pour List et Map -> Intégrée
    Par vbrabant dans le forum Collection et Stream
    Réponses: 58
    Dernier message: 03/09/2009, 16h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo