Constante String com aspas dupla

Bom dia galera!

Eu tenho uma classe de constantes estáticas do tipo String. Ex.:

public static final String VAR1= "a";

Porém, quando vou utilizá-la em outra classe:

if(var.equals(Classe.VAR1)) {
...
}

ao debugar, percebi que o valor que está sendo retornado pela constante é ““a”” e não “a” como declarado.

Se alguém souber o que pode estar acontecendo, eu agradeço!

Abs.

Fala ai rso1988

se possivel era uma boa vc postar o codigo completo, pelo menos da parte aonde esta o problema, para melhor solução

Abração 8)

Max

[quote=rso1988]Bom dia galera!

Eu tenho uma classe de constantes estáticas do tipo String. Ex.:

public static final String VAR1= "a";

Porém, quando vou utilizá-la em outra classe:

if(var.equals(Classe.VAR1)) {
...
}

ao debugar, percebi que o valor que está sendo retornado pela constante é ““a”” e não “a” como declarado.

Se alguém souber o que pode estar acontecendo, eu agradeço!

Abs.[/quote]

O mais provável é que a sua ferramenta de debug esteja colocando as aspas extras. Do jeito como está declarada a constante é impossível que seu conteúdo esteja errado.

Uma dica importante: ao invés de…

if(var.equals(Classe.VAR1)) { /*...*/ }

Prefira:

if(Classe.VAR1.equals(var)) { /*...*/ }

Além de a performance da comparação ficar melhor (sempre que a constante é comparada, estando à esquerda, a execução dessa comparação é mais rápida), se a sua variável vier nula essa forma de comparação evita um NullPointerException e retorna corretamente false.

Segue o código abaixo:

public class SocialMediaConstants {
    
    //Social Medias.
    public static final String FACEBOOK_ID = "f";
    public static final String ORKUT_ID = "o";
    
    //Caches
    public static final String CACHE_EVENTS = "Summer_Events";
    public static final String CACHE_REGISTRY = "Summer_Registry";
    
    //Elements
    public static final String ELEMENT_EVENTS = "Summer_Events_Element";
    public static final String ELEMENT_COUNTRY = "Summer_Registry_Country";
    
    //Session Attributes
    public static final String SESSION_FRIENDS_LIST_ORKUT = "Session_Friends_List_Orkut";
    public static final String SESSION_FRIENDS_LIST_FACEBOOK = "Session_Friends_List_Facebook";
    public static final String SESSION_SOURCE_REQUEST = "Session_Source_Request";
}
if((!s.equals(SocialMediaConstants .FACEBOOK_ID)) && (!s.equals(SocialMediaConstants .ORKUT_ID))){
         errors.add(SocialMediaConstants .INVALID_SOCIAL_ID);
}

Dentro do “if”, a constante “SocialMediaConstants .FACEBOOK_ID” está retornando o valor ““f”” e não “f” como declarado. Na verdade, todas os atributos estão vindo com estas aspas duplas a mais.

[]'s

[quote=rso1988]Segue o código abaixo:

public class SocialMediaConstants {
    
    //Social Medias.
    public static final String FACEBOOK_ID = "f";
    public static final String ORKUT_ID = "o";
    
    //Caches
    public static final String CACHE_EVENTS = "Summer_Events";
    public static final String CACHE_REGISTRY = "Summer_Registry";
    
    //Elements
    public static final String ELEMENT_EVENTS = "Summer_Events_Element";
    public static final String ELEMENT_COUNTRY = "Summer_Registry_Country";
    
    //Session Attributes
    public static final String SESSION_FRIENDS_LIST_ORKUT = "Session_Friends_List_Orkut";
    public static final String SESSION_FRIENDS_LIST_FACEBOOK = "Session_Friends_List_Facebook";
    public static final String SESSION_SOURCE_REQUEST = "Session_Source_Request";
}
if((!s.equals(SocialMediaConstants .FACEBOOK_ID)) && (!s.equals(SocialMediaConstants .ORKUT_ID))){
         errors.add(SocialMediaConstants .INVALID_SOCIAL_ID);
}

Dentro do “if”, a constante “SocialMediaConstants .FACEBOOK_ID” está retornando o valor ““f”” e não “f” como declarado. Na verdade, todas os atributos estão vindo com estas aspas duplas a mais.

[]'s

[/quote]
Experimente colocar um System.out.println(SocialMediaConstants.FACEBOOK_ID); no seu programa e veja o resultado.

Novamente, prefira colocar as constantes à esquerda do equals.

Olá Fox McCloud,

realmente, é o debug que está imprimindo deste jeito, e o problema real que existia era na lógica, que acabou confundindo! :slight_smile:

E valeu pela dica da comparação, nunca é demais usar boas práticas! hehe

Valeu!

[quote=rso1988]Olá Fox McCloud,

realmente, é o debug que está imprimindo deste jeito, e o problema real que existia era na lógica, que acabou confundindo! :slight_smile:

E valeu pela dica da comparação, nunca é demais usar boas práticas! hehe

Valeu!

[/quote]
:wink:

Boa sorte!