Collections

1 resposta
L

olha só galera eu não entendi um trecho de linha de código do programa abaixo e gostaria que alguém me ajudasse,estou começando a ver agora na faculdade collections e realmente estou um pouco perdido…o q estiverem em vermelho é q não entendi.valeu obrigado galera !!!

class Empregado implements Comparable {

String nome;

int salario;         //aqui  tudo bem
public Empregado(String nome, int salario) {

this.nome = nome;

this.salario = salario;

}
public boolean equals(Object o) {

if ( o == this ) {

return true;

}

if ( o == null ) {

return false;

}

if ( getClass() != o.getClass() ) //[color=“red”]de onde vem o getClass[/color]

return false;

}

Empregado e = (Empregado) o ;

return nome.equals(e.nome) && salario == e.salario;

}

public int hashCode() {
int resultado = 17;

resultado = 37 * resultado + nome.hashCode();
  resultado = 37 * resultado + salario;
  return resultado;

}

public int compareTo (Object o) {

Empregado e = (Empregado) o;[color=red]aqui ele utiliza a conversão?[/color]

return salario - e.salario;

}

}

1 Resposta

J

getClass() é um metodo da classe java.lang.Object, que portanto, é herdado por todas as classes.

Veja em: http://java.sun.com/javase/6/docs/api/java/lang/Object.html#getClass()

A comparação que está sendo feita é um tanto “grosseira” na minha opinião, o ideal seria fazer isso:

if (!(o instanceof Empregado)){ return false; }

a parte “(Empregado) o” é um cast da variavel “o” de Object para Empregado, veja que o tipo da variavel “o” é Object, e portanto você precisa convertê-lo para Empregado para acessar o atributo salario.

Criado 30 de agosto de 2007
Ultima resposta 30 de ago. de 2007
Respostas 1
Participantes 2