Essa de reiniciar a máquina pra mim é nova. Bom seria se reiniciar o pc ou falar mal do eclipse arrumasse um código errado.
Se está comparando objetos, utilize o Equals. Simples assim.
[]'s
RafaelCassau
Caro mariazinhahappy, seguinte, o java usa referencia para guardar o endereço do seu objeto na HEAP sendo assim, quando se compara objetos, entenda por objetos qualquer classe que foi construida com a palavra reservada “new” ou qualquer classe Wrapper em java sendo algumas delas (Integer, Double, Float, Long) caso você queira comparar objetos, será necessário sobreescrever os métodos equals() e hashCode(), o eclipse faz isso para você agora caso você esteja tentando comparar Integer o java apartir a versão 5 faz o inbox para você (inbox) entenda como o mecanismo de encaixotamento e desencaixotamento que na verdade nada mais é do que o conversão de tipos primitivos para objetos que emulam o mesmo comportamento ae você poderá usar o ‘==’ pois o mesmo ira comparar o conteudo das variaveis e nesse conteudo terá realmente o valor que ela representa, bem diferente de quando temos objetos, em que as variaveis que o representam guardam seu endereço, ou seja, por mais que os objetos sejam iguais o seu endereço sempre será diferente.
espero ter ajudado
quanto ao amigo que disse que somente usando o equals funciona, na verdade não funciona o equals() só funciona com String pois a classe sobrescreve o equals() e o hascode() de Object
t+
Rodrigo_Sasaki
RafaelCassau:
agora caso você esteja tentando comparar Integer o java apartir a versão 5 faz o inbox para você (inbox) entenda como o mecanismo de encaixotamento e desencaixotamento que na verdade nada mais é do que o conversão de tipos primitivos para objetos que emulam o mesmo comportamento ae você poderá usar o '==' pois o mesmo ira comparar o conteudo das variaveis e nesse conteudo terá realmente o valor que ela representa
Opa. Calma lá :)
Isso nem sempre é verdade. Veja o exemplo abaixo:
if (tipoRevista.getRevitasList().get(i).getTp() == ConstantesTipoRevista.ESPORTE) {
debugei que na debugação o primeiro bloco é 2 e o segundo é 2 também… mas não encontra nesse if
observacao:
ja desliguei e liguei de novo a maquina
ja dei clean no eclipse
Com certeza vc está tentando comparar números, contudo está na verdade partindo a mesma de objetos.
Use este método, deve funcionar:
.intValue()
Seu código de ficar assim:
if (tipoRevista.getRevitasList().get(i).getTp().intValue() == ConstantesTipoRevista.ESPORTE) {
M
mariazinhahappy
meninos funcionou muito obrigada
lina
Rodrigo Sasaki:
RafaelCassau:
agora caso você esteja tentando comparar Integer o java apartir a versão 5 faz o inbox para você (inbox) entenda como o mecanismo de encaixotamento e desencaixotamento que na verdade nada mais é do que o conversão de tipos primitivos para objetos que emulam o mesmo comportamento ae você poderá usar o '==' pois o mesmo ira comparar o conteudo das variaveis e nesse conteudo terá realmente o valor que ela representa
Opa. Calma lá :)
Isso nem sempre é verdade. Veja o exemplo abaixo:
Exatamente. Quando você compila um numero literal em Java, é feito da seguinte forma:
Integer b2 =Integer.valueOf(127)
Ou seja, valueOf é implementado para que retorne a mesma instância para valores menores do que 128.
De qualquer maneira, você pode executar seu programa usando as propriedades do sistema (aumentando o high cache)
-Djava.lang.Integer.IntegerCache.high = 999
e o resultado será true.
Tchauzin!
RafaelCassau
Exatamente como a lina disse, o exemplo que citei foi para poder explicar a teoria, creio que isso já esclareceu a duvida que foi mencionada, sendo assim o tópico já pode ser editado para [RESOLVIDO]