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: Êtes-vous pour ou contre cette proposition ?

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

    404 85,77%
  • Contre

    67 14,23%
Langage Java Discussion :

JDK 7: Proposition 4 : possibilité d'utiliser les String dans les switch case -> Intégrée [Débat]


Sujet :

Langage Java

  1. #1
    Expert éminent sénior


    Profil pro
    Inscrit en
    Mai 2003
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 3 240
    Points : 11 101
    Points
    11 101
    Par défaut JDK 7: Proposition 4 : possibilité d'utiliser les String dans les switch case -> Intégrée
    Aujourd'hui :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    static boolean booleanFromString(String s) {
        if (s.equals("true")) {
            return true;
        } else if (s.equals("false")) {
            return false;
        } else {
            throw new IllegalArgumentException(s);
        }
    }
    Demain :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    static boolean booleanFromString(String s) {
        switch(s) {
          case "true":
            return true;
          case "false":
            return false;
          default:
            throw new IllegalArgumentException(s);
        }
    }

  2. #2
    Membre confirmé Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    456
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2003
    Messages : 456
    Points : 482
    Points
    482
    Par défaut
    Bonjour,

    Voila une nouveauté qui serait vraiment utile.

    Je suis à 100% pour.

    Fini les if, else if, if à rallonge. Les cases apportent beaucoup de clarté au code. Donc il est + maintenable.

    A+
    Gronono

  3. #3
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Bonsoir

    J'ai voté pour mais j'ai quand même une petite question. Est ce que cette fonctionnalité inclue le fait de pouvoir comparer les chaines avec l'opérateur == en toute tranquillité ?

    Merci

    [edit]
    du coup ça me fait penser à une autre fonctionnalité qui peut être cool:
    utiliser les opérateurs <, >, <=, >= (pas le == évidemment) sur des objets de type Comparable appelle automatiquement la méthode compareTo... je suis trop gourmand ? Il faudrait voir si cette question n'est pas mieux dans la proposition 3.
    [/edit]

    Yann

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Points : 327
    Points
    327
    Par défaut
    Pour à 200%, j'ai toujours trouvé que le switch sur String était un manque dans de nombreux langages.

  5. #5
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 171
    Points : 97
    Points
    97
    Par défaut
    J'ai voté pour, mais finalement apres reflexion cela ne serait plus cohérent par rapport a l'opérateur == comme disait "yann2".
    Cela reviendrais a dire que le type String est un type primitif.

    Plutot contre en faite (mince je lui premier)

  6. #6
    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 metalpetsFR Voir le message
    Cela reviendrais a dire que le type String est un type primitif.
    String est quand même un type bien particulier

    a++

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Points : 362
    Points
    362
    Par défaut
    Je ne vois pas en quoi le case changerais le s.equals(string) !!!

    En tout cas je suis pour à 100%, je trouve que c'est un manque dans certain cas.

  8. #8
    Membre éprouvé
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Points : 936
    Points
    936
    Par défaut
    Moi je ne suis pas pour !

    C'est pratique quand tu fais du php, mais en java ca fait grado.
    Vu que les string seront de toute facon en dur dans les cases, il est plus préférable de porter l'utilisation des Enumérations dans ce cas.

  9. #9
    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 : 269
    Points
    269
    Par défaut
    Je trouve ça effectivement joli et séduisant. mais comme dit n!co, un switch de String reste de toutes façons crado.
    Et vu qu'il a beaucoup de propositions de sucre syntaxique, je ne veux pas qu'il y en ait trop, au risque de compliquer le langage.

  10. #10
    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 : 46
    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
    Je suis pour, je trouve que ça peut simplifier le code, sans mettre trop de complexité...

    Quant au fait de pouvoir utiliser le switch en utilisant le ==, je ne sais pas trop comment cela se matérialiserait du point de vue écriture du code java...
    A ce niveau là, aussi pourquoi ne pas proposer une comparaison des Strings en ignorant la casse (en gros, que l'on puisse utiliser le equalsIgnoreCase("") au lieu de equals("") ) ?

  11. #11
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Je ne dirais qu'une chose : ENFIN !

  12. #12
    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 : 46
    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
    D'accord et pas d'accord avec n!co.
    Je ne vois pas trop pourquoi un switch sur les String serait plus crados qu'un enchaînement (lourd à digérer) de if - else...
    Mais je suis super pour qu'on étende aussi les switches aux Enumérations !

    J'aimerais bien pouvoir faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    switch (saison) {
        case SUMMER:
            ...
        case WINTER:
            ...
        ...
    }

  13. #13
    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 : 47
    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
    +1
    Ce serait bien pratique.

  14. #14
    Membre éclairé Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Points : 695
    Points
    695
    Par défaut
    Citation Envoyé par romaintaz Voir le message
    D'accord et pas d'accord avec n!co.
    Je ne vois pas trop pourquoi un switch sur les String serait plus crados qu'un enchaînement (lourd à digérer) de if - else...
    Mais je suis super pour qu'on étende aussi les switches aux Enumérations !

    J'aimerais bien pouvoir faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    switch (saison) {
        case SUMMER:
            ...
        case WINTER:
            ...
        ...
    }
    Ca c'est deja faisable enums

    c'est vrai qu'un switch avec des Strings peut être fait avec des enums !

  15. #15
    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 : 269
    Points
    269
    Par défaut
    Citation Envoyé par romaintaz Voir le message
    D'accord et pas d'accord avec n!co.
    Je ne vois pas trop pourquoi un switch sur les String serait plus crados qu'un enchaînement (lourd à digérer) de if - else...
    En fait, si n!co pense bien comme moi, ce n'est pas que le switch serait plus crado que des if/then/else, mais que c'est le fait d'utiliser des String pour conditionner des actions qui est crado. Il vaut mieux effectivement utiliser des enums

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 68
    Points : 62
    Points
    62
    Par défaut Pour. Mais il faut creuser plus loin...
    Je suis pour mais je serais d'avis de ne pas seulement se limiter au type String. Pourquoi ne pas aller plus loin et permettre un switch qui pourrait comparer des objets identiques.

    On pourrait comparer des String, des BigDecimals mais également des classes que nous avons développé nous-mêmes.

  17. #17
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut
    Pour, ca permet de faire des switch a la place de if else à la chaine.

  18. #18
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Contre,

    Les enums apportent déjà cette possibilité, quand j'ai des constantes String je les déclare toujours en constante java (static final ou enum) ce qui évite les fautes de frappes accidentelles si je dois les utiliser a plusieurs endroits.

    Quand au == entre string je vois pas trop ce que ça apporte de toute façon, il faudrait quand même que certains se fassent au fait que Java est objet.
    S'il veulent de la surcharge d'opérateurs ils ont qu'a essayer C++, on les reverra vite parmi nous une fois qu'ils auront réalisé l'avantage de la chose et les multiples danger que ça introduit.

    Bulbo

  19. #19
    Membre éclairé Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Points : 695
    Points
    695
    Par défaut
    J'ai voté pour,
    mais si on utilisait les enums, le refactoring serait possible alors qu'avec cette solution très élégante ,non !

    Hors sujet: pourquoi on débattrait pas des superpackages
    il me semble que cette proposition est plus interressente que toutes les autres

  20. #20
    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 bassim Voir le message
    Hors sujet: pourquoi on débattrait pas des superpackages
    il me semble que cette proposition est plus interressente que toutes les autres
    Les superpackages sont déjà à un stade avancé et possède déjà leurs JSR... ils devraient donc bien faire partie de Java 7.

    Ce n'est pas le cas de ces propositions

    a++

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/08/2009, 17h09
  2. Réponses: 2
    Dernier message: 07/06/2009, 19h54
  3. les classes et les templates dans les plugins
    Par asoka13 dans le forum C++
    Réponses: 22
    Dernier message: 24/01/2008, 17h11
  4. Réponses: 4
    Dernier message: 11/09/2006, 16h55
  5. Les polices dans les tables et les requêts
    Par zooffy dans le forum Access
    Réponses: 3
    Dernier message: 21/06/2006, 11h06

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