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

Spring Java Discussion :

Problème d'égalité "String"


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 87
    Par défaut Problème d'égalité "String"
    Bonjour,

    Mon problème est le suivant :
    En spring je crée un objet qui a un attribut comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <property name="state">
    			<value>Open</value>
    		</property>
    Je crée une variable "state" égal au "state" du bean crée.

    J'ai aussi, en dehors de spring crée une constante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static final String OPEN = "Open";
    Quand je veux comparer les deux il y a une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (Constantes.OPEN.contains(state)){}
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (Constantes.OPEN == state){}
    renvoit tous les deux faux

    Pouvez vous m'aider ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Par défaut
    Citation Envoyé par Misaki43 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (Constantes.OPEN == state){}
    C'est normal. Un == en Java, pour des objets (String, Integer, ou tout autre Classe), effectue une comparaison sur les instances des objets et non sur les valeurs. Il faut appeler la méthode équals pour effectuer une comparaison sur les valeurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    String a = "test";
    String b = "test";
    String referenceA = a;
     
    a == b // false, car a et b ne sont pas la même instance
    a.equals(b) // true, la méthode equals effectue bien une comparaison sur les valeurs
    a == referenceA // true car referenceA pointe sur la même instance que a
    Pour toi il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (Constantes.OPEN.equals(state)){}
    Je pense cependant que tu as un problème d'initialisation de ta variable state, car la méthode contains aurait quand même du marcher...

    Tu peux exécuter ce code juste au dessus de ton if qu'on voit la valeur de "state" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("state[" + state.getClass() + "] = \"" + state + "\"");
    Romain.

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 87
    Par défaut
    Bonjour,

    Merci d'avoir répondu!

    C'était bien "equals" qu'il fallait mettre, j'avais testé mais qu'à un des "if" de mon code, et l'erreur était après...

    Désolé pour le dérangement et merci de votre aide!

    (résolu)

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

Discussions similaires

  1. Problème sur Request.ServerVariables("QUERY_STRING"
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 25/03/2005, 11h47

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