Comparando o Objeto Inteiro

3 respostas
iuoyo

Oii gente...

Me deparei com um problema muito incomum para mim.

Estou comparando um arrayList com um Objeto PeriodoAvaliação. Para não ter problemas estou comparando os 2 atributos destas classes que são do tipo Integer:

- Ano - Quadrimestre.
<%!
            public boolean verificaExistenciaDaAvaliacao(PeriodoAvaliacao periodoAvaliacao, ArrayList<PeriodoAvaliacao> periodoAvaliacoes) {
                for (int i = 0; i < periodoAvaliacoes.size(); i++) {
                    if ((periodoAvaliacoes.get(i).getAno().equals(periodoAvaliacao.getAno())) && (periodoAvaliacoes.get(i).getQuadrimestre().equals(periodoAvaliacao.getQuadrimestre())){
                        return false;
                    }
                }

                return true;
            }
        %>

Nesse caso acima, seu eu uso o comparador == da erro.

if ((periodoAvaliacoes.get(i).getAno() == periodoAvaliacao.getAno()) && (periodoAvaliacoes.get(i).getQuadrimestre() == periodoAvaliacao.getQuadrimestre()){

Ele não ve que 2010 é 2010 e quadrimestre 3 é quadrimestre 3. Estranho, alguém pode me explicar isso o porque disso??

A única explicação pláusível é que por ser objeto usamos Equals que é o mesmo caso da String...

Gostaria de perguntar qual o melhor modo de comparar o Objeto inteiro e quando devo usá-lo, já que essas informações eu estou puxando de banco de dados de campos Integer.

Agradeço a Atenção.
Rodrigo Torres Leme

3 Respostas

Rafael_Carneiro

Voce tem que comparar com equals, e nao com ==, porque Integer eh objeto.

matheusconan

Cara,

Concordo com o Rafael, e para obter o valor que o objeto tem referência, por exemplo o Integer i tem referencia ao valor inteiro 10, você pode usar um método default java que se não me engano é: nome_do_integer.intValue().

Exemplo:

Integer i;

i = 10;

if(i.intValue()==10) // aqui vc pode colocar o outro_integer.intValue() no lugar do valor também!
{
	System.out.println(""+i.intValue());
}

Espero que ajude!
[]'s

iuoyo

Valeu gente. Obrigado pelo esclarecimento.

Criado 20 de dezembro de 2010
Ultima resposta 20 de dez. de 2010
Respostas 3
Participantes 3