Bom dia
Estou com dúvida quanto a um exemplo da apostila da Caelum
public boolean equals(Object object) {
Conta outraConta = (Conta) object;
if (this.saldo == outraConta.saldo) {
return true;
}
return false;
}
Pra que serve a linha Conta outraConta = (Conta) object ?
Pra mim não faz muito sentido … quando eu vou comparar eu irei passar como parametro uma referencia a um objeto Conta.
Eu lembro que o professor disse algo do tipo “Mas o compilador não sabe se aquele object é uma Conta ou não”.
Ok. Mas porque eutenho que criar uma nova refêrencia, ao invez de usar um castling ?
Att
Esta ‘transfoormando’ um objeto do tipo Object,
em um objeto do tipo Conta.
daveiga
Se não quiser atualizar a referência pode fazer um casting diretamente:
public boolean equals(Object object) {
if (this.saldo == ((Conta) objec).saldo) {
return true;
return false;
}
PS: Lembre-se de verificar se Object não é nulo
E
edubranquinho
Calma cara eu sei que é Casting foi erro de digitação mesmo =/
Minha duvida era exatamente essa Daveiga, acho mais “racional” assim pois vc nao cria outra referencia, só faz um Casting direto (claro que teria que ter um try catch pq ali pode dar uma exception).
Obrigado aos dois !
outra coisa, criar variaveis dentro do escopo de um metodo não traz custo de memoria a aplicação.
daveiga
Complementando o que o DaniloAndrade falou, criar novas referências cria apenas “ponteiros” não objetos em si, assim tudo o que você está fazendo é trazê-lo para um escopo local.
Em alguns casos é até preferível que você faça isso e acesse no mesmo escopo, diretamente algum valor do que ficar acessando-o através de getters e mais getters, por exemplo:
É melhor fazer isso:
UF uf = pessoa.getEnderecoPrincipal().getCidade().getUF();
for(...)
// usando várias vezes uf aqui.
Do que repetir vária svezes os getters, por uma questão de performance mesmo, sem falar em legibilidade.