classe A { }
classe B estende A { }
Objeto o1 = novo A();
Objeto o2 = novo B();
o1 instância de A => verdadeiro
o1 instância de B => falso
o2 instanceof A => true // <================ AQUI
o2 instância de B => verdadeiro
o1.getClass().equals(A.class) => verdadeiro
o1.getClass().equals(B.class) => falso
o2.getClass().equals(A.class) => false // <===============AQUI
o2.getClass().equals(B.class) => verdadeiro
getClass() será útil quando você quiser ter certeza de que sua instância NÃO é uma subclasse da classe com a qual você está comparando.
一个非常完美的é igual a方法的写法:
// deve retornar falso se o parâmetro explícito for nulo
if (otherObject == null) retorna falso;
// se as classes não corresponderem, elas não podem ser iguais
if (getClass()! = otherObject.getClass()) retornar falso;
// agora sabemos que otherObject é um Employee não nulo
Funcionário outro = (Funcionário) otherObject;
// testa se os campos possuem valores idênticos
retornar nome.equals(outro.nome) && salário == outro.salário && contratarDay.equals(outro.hireDay);
}