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

Langage Java Discussion :

[Switch] Et les constantes


Sujet :

Langage Java

  1. #1
    BiM
    BiM est déconnecté
    Expert confirmé
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par défaut [Switch] Et les constantes
    Bonjour,

    J'ai un petit problème de switch. Je m'en sers très peu en Java mais j'en ai besoin d'un pour une fois.

    Je travaille avec la version 6.0 de Java.

    D'abord, je me suis fendue d'une recherche et j'ai trouvé un extrait de FAQ : Pourquoi mon switch ne veut-il pas compiler ?

    Voici mon code pour le switch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    switch (choix) {
    	case MaClasse.CHOIX_1 : ...; break;
    	case MaClasse.CHOIX_2 : ...; break;
    	case MaClasse.CHOIX_3 : ...; break;
    }
    Voici le fichier MaClasse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class MaClasse {
    	public static final Integer CHOIX_1= new Integer(0);
    	public static final Integer CHOIX_2 = new Integer(1);
    	public static final Integer CHOIX_3 = new Integer(2);
    }
    Le switch n'accepte que les types simples mais en Java 6 le Integer est nativement transformé en int si besoin est et même avec intValue() derrière ca ne fonctionne pas mieux. De toute façon, l'erreur ne concerne pas le type mais remet en question que CHOIX_1, CHOIX_2 et CHOIX_3 soient des constantes :
    Citation Envoyé par Compilateur
    case expressions must be constant expressions
    Et là... je suis perdue !

    PS : J'ai honte de poser une question aussi simple

  2. #2
    BiM
    BiM est déconnecté
    Expert confirmé
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par défaut
    Après lecture de ce post : http://www.developpez.net/forums/sho...d.php?t=253138

    Je me demande s'il ne faut pas que je déclare mes variables de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class MaClasse {
    	public static final Integer CHOIX_1= 0;
    	public static final Integer CHOIX_2 = 1;
    	public static final Integer CHOIX_3 = 2;
    }
    Mais... c'est le mal ! Alors je suis obligée ?

    [EDIT]Ah bah non, ça ne fonctionne pas mieux ![/EDIT]
    [EDIT 2]Le pire c'est que j'avais même lu la discussion il y a presque 1 an J'ai encore plus honte...[/EDIT 2]

  3. #3
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Par défaut
    Le problème semble venir du fait que ce sont des objets (type Integer), car si tu passes tes constantes en int, plus de souci...

    EDIT : comme dit dans le post dont tu donnes le lien, la valeur de tes "constantes" ne seront connues qu'à l'exécution, ce qui pose problème au compilateur...

  4. #4
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    Mets tes integer en int. Un Integer ne peut pas être une constante du fait que tu peux le modifier même s'il est final.

    En les mettant en int ca devrait fonctionner. A noter aussi que les switch acceptent les enums.

  5. #5
    BiM
    BiM est déconnecté
    Expert confirmé
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par défaut
    Merci, j'allais poster la réponse C'est effectivement exactement ça.

    Bon, ben, je sers à rien.


  6. #6
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Par défaut
    Citation Envoyé par Pollux Voir le message
    Un Integer ne peut pas être une constante du fait que tu peux le modifier même s'il est final.
    Ca par contre, j'en suis pas persuadé... Si c'est final, le compilateur doit pas être ravi si tu tentes de l'assigner, non ?

  7. #7
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    Citation Envoyé par DevTeam_ Voir le message
    Ca par contre, j'en suis pas persuadé... Si c'est final, le compilateur doit pas être ravi si tu tentes de l'assigner, non ?
    J'ai pas dit assigner j'ai dit modifier! La référence à ton objet ne change pas mais le contenu de l'objet peut très bien être modifié si son API le permet.

  8. #8
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Pollux Voir le message
    J'ai pas dit assigner j'ai dit modifier! La référence à ton objet ne change pas mais le contenu de l'objet peut très bien être modifié si son API le permet.
    Pas avec Integer qui est immuable...

    a++

  9. #9
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Par défaut
    Citation Envoyé par Pollux Voir le message
    J'ai pas dit assigner j'ai dit modifier! La référence à ton objet ne change pas mais le contenu de l'objet peut très bien être modifié si son API le permet.
    Je cherche les setters sur la classe Integer....

  10. #10
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    J'ai bien dit si son api le permet

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/05/2008, 16h06
  2. Où définir les constantes #define
    Par bubulemaster dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/03/2008, 12h13
  3. Mais où sont les constantes système ?
    Par pdgnr dans le forum Windows Forms
    Réponses: 3
    Dernier message: 22/06/2007, 14h05
  4. Réponses: 9
    Dernier message: 15/03/2006, 08h58
  5. Réponses: 4
    Dernier message: 10/11/2005, 11h45

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