2011-05-11 3 views
2

J'ai le code suivant dans mon présentateur dans une application GWT MVP:GWT: String comparision ne fonctionne pas

public void onFailure(ServerFailure error) { 

    String errCode = error.getMessage(); 

    Window.alert(errCode); 
    Window.alert("Server Error: pleaseEnterQuestion"); 

    if(errCode == "Server Error: pleaseEnterQuestion") 
     Window.alert("same"); 
    else 
     Window.alert("different"); 
} 

Les deux premières alertes exactement la même chose. La troisième alerte est different. Mais je m'attends à ce que ce soit same.

+2

Comme un curieux sidenote: en Javascript le == fonctionne bien (parce qu'il compare la valeur). Et GWT traduit le String.equals en celui-là (plus ou moins). Donc, ce code fonctionnera en mode compilé (mode de production) mais pas en mode développeur (débogage) ... Dit que: ** s'il vous plaît utiliser égal à !!! ** ** – helios

Répondre

7

Utilisez equals, pas ==, pour comparer des chaînes:

if("Server Error: pleaseEnterQuestion".equals(errCode)) 

Voir cette question SO Pour plus d'informations: How do I compare strings in Java?

1

Utilisez equals()

En est égal au contenu la chaîne n'est pas comparée aux ID de référence de l'objet chaîne.

En == les ID de référence d'objets sont comparés.

La méthode equals() est substituée dans les classes String et Wrapper dans java ailleurs equals et == ont la même fonctionnalité.

2

Toujours utiliser est égal à() lorsque vous souhaitez comparer les chaînes. De plus, il faut parfois couper (à gauche, à droite ou tout simplement couper :)) Votre String avant de comparer, car il contient des espaces blancs.