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.
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";
}
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.
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";
}
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.