Explicação do metodo equals();

4 respostas
D

por gentileza alguem pode me explicar detalhadamente estas 2 linhas marcadas no metodo equals(); e como ele funciona? :?:

public boolean equals(Object obj) {
        if ((obj instanceof ContaCorrente05) &&  //  aqui
                ((ContaCorrente05) obj).getAgencia().equals(this.getAgencia())) { // aqui

            return true;
        } else {
            return false;
        }
    }

4 Respostas

letakeda

Pocure sempre colocar o codigo entra as tags de Code, disponibilizadas pelo forum....

Assim:

public boolean equals(Object obj) {
if ((obj instanceof ContaCorrente05) && // aqui
((ContaCorrente05) obj).getAgencia().equals(this.getAgencia())) { // aqui

return true;
} else {
return false;
}
}

Este metodo recebe um objeto... da classe Object... tudo parte dele.... depois se ContaCorrente pertence (instanceof) a obj... que você passou E ContaCorrente.getAgencia (metodo que nao sei exatamente o que retorna) é igual (equals significa que está apontando para o mesmo lugar na memoria, ou seja, voce nao pode usar == para objetos) ... se ambas as condiçoes acima forem verdadeiras... retorna true, senao false.

Nao sei se fui claro... mas ... qualquer coisa fala ae

D
letakeda:
Pocure sempre colocar o codigo entra as tags de Code, disponibilizadas pelo forum....

Assim:

public boolean equals(Object obj) {
if ((obj instanceof ContaCorrente05) && // aqui
((ContaCorrente05) obj).getAgencia().equals(this.getAgencia())) { // aqui

return true;
} else {
return false;
}
}

Este metodo recebe um objeto... da classe Object... tudo parte dele.... depois se ContaCorrente pertence (instanceof) a obj... que você passou E ContaCorrente.getAgencia (metodo que nao sei exatamente o que retorna) é igual (equals significa que está apontando para o mesmo lugar na memoria, ou seja, voce nao pode usar == para objetos) ... se ambas as condiçoes acima forem verdadeiras... retorna true, senao false.

Nao sei se fui claro... mas ... qualquer coisa fala ae

A respeito da TAG CODE, já comecei a usar.
aprendi bem com a sua explicação amigo...

betoslayer

letakeda:

Este metodo recebe um objeto… da classe Object… tudo parte dele… depois se ContaCorrente pertence (instanceof) a obj… que você passou E ContaCorrente.getAgencia (metodo que nao sei exatamente o que retorna) é igual (equals significa que está apontando para o mesmo lugar na memoria, ou seja, voce nao pode usar == para objetos) … se ambas as condiçoes acima forem verdadeiras… retorna true, senao false.

Nao sei se fui claro… mas … qualquer coisa fala ae

Letakeda voce esta totalmente equivocado, e explicando tudo errado pro garoto. O método equal não tem nada a ver com endereço de mémoria, e o operador “==” pode ser usado sim para comparar objetos. Vou explicar corretamente a questao.

Primeiro: instanceof verifica se um objeto passa na relação é um para aquela classe ( ou seja, se o objeto é um tipo daquela classe diretamente ou por herança)

Segundo: o método equals significa se um objeto é signifcativamente equivalente ao passado pelo parametro do metodo, ou seja, nao tem nada a ver com endereço de memoria iguais. Por exemplo na classe String o metodo equals será true se elas tiverem o mesmo valor, mas elas podem ter endereços de memoria diferentes. O metodo equals de um objeto dog pode retornar true para um objeto cat, mesmo se forem objetos de classes diferentes, ou seja, vai depender do que o programador da classe entender o q é significativo para tornar um objeto seu equivalente a outro e isso independente do endereço de memoria. Agora, se o programador nao criar um metodo equals (sobrescrevendo o metodo equals da classe Object), aí o equals so retornará true se os objetos tiverem o mesmo endereço de memória. Algumas classes ja sobrescrevem o metodo equals por padrao, é o caso da classe String de das classes wrappers. A subscrição do metodo equals é muito importante para fazer ordernar arrays ou listas e tambem parar colocar objetos em tabelas hash.

Terceiro: o operador “==” retorna true sempre que os objetos se referirem a um mesmo endereço na memória. Ou seja nesse caso se der true na comparação eles são realmente o mesmo objeto. Enquanto que no equals eles podem ser o mesmo objeto ou objeto diferentes.

D
dejota008:
por gentileza alguem pode me explicar detalhadamente estas 2 linhas marcadas no metodo equals(); e como ele funciona? :?:
public boolean equals(Object obj) {
        if ((obj instanceof ContaCorrente05) &&  //  aqui
                ((ContaCorrente05) obj).getAgencia().equals(this.getAgencia())) { // aqui

            return true;
        } else {
            return false;
        }
    }

No [url]http://cursaki.blogspot.com.br/2012/05/o-metodo-equals.html[/url], tem uma explicação minha detalhada sobre o método equals.

Um Abraço!

Criado 28 de novembro de 2008
Ultima resposta 16 de jun. de 2015
Respostas 4
Participantes 4