A classe q tou é Idioma…
public boolean equals(Idioma obj){
if (getClass() == obj)
return false;
}
queria saber se o objeto passado é referente a classe q tou…
pq tá dando pau?
A classe q tou é Idioma…
public boolean equals(Idioma obj){
if (getClass() == obj)
return false;
}
queria saber se o objeto passado é referente a classe q tou…
pq tá dando pau?
Puxa… Lí a documentação mas não entendí ao certo o que faz o método getClass()…
getClass() retorna um objeto do tipo Class<?>, portanto para ver se o outro objeto Idioma tem exatamente a mesma classe do seu objeto em particular, você também tem de chamar o método getClass sobre o parâmetro obj.
public boolean equals(Idioma obj){
if (getClass() != obj.getClass()) // ou seja, a classe deste objeto é diferente da classe de obj
return false;
....
}
A propósito, a assinatura do método “equals” é
@Override
public boolean equals (Object obj) {
....
}
não essa que você passou.
cara… vc esta querendo apenas sobrescrever o método equals?
o erro não sei te dizer pq acontece… mas vc podia postar qual o erro que da…
e para sobrescrever…
pode fazer assim:
@Override
public boolean equals(Object obj)
{
if(obj == null)
return false;
if (!(obj instanceof Idioma ))
{
return false;
}
final Idioma other = (Idioma ) obj;
if(getId()==null)
return false;
return getId().equals(other.getId());
}
Poderia me ajudar a entender este método:
[code] @Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Idioma other = (Idioma) obj;
if (getIdIdioma() == null) {
if (other.getIdIdioma() != null)
return false;
} else if (!idIdioma.equals(other.idIdioma))
return false;
return true;
}
}[/code]
dentre outras palavras usa-se então o getClass() pra comparar objetos? tipo Objeto1 == Objeto2? -> não… certo?
@Override --> indica que o método está sobrepondo o método declarado na superclasse
public boolean equals(Object obj) {
if (this == obj) // se as referências forem iguais, é true
return true;
if (obj == null) // this é sempre diferente de null - esse cheque é feito para evitar um NullPointerException abaixo
return false;
if (getClass() != obj.getClass()) // se não forem exatamente da mesma classe, são diferentes
return false;
Idioma other = (Idioma) obj; // fazemos o cast
if (getIdIdioma() == null) { // comparamos por idIdioma. Se ambos forem null, então são pela sua convenção iguais.
if (other.getIdIdioma() != null)
return false;
} else if (!idIdioma.equals(other.idIdioma)) // comparamos por idIdioma, usando o equals de idIdioma
return false;
return true;
}
cara… no caso eu não uso o getClass… eu uso o instanceof, o resultado seria o mesmo…
[quote]A classe q tou é Idioma…
public boolean equals(Idioma obj){
if (getClass() == obj)
return false;
}
queria saber se o objeto passado é referente a classe q tou…
pq tá dando pau?
[/quote]
Está dando erro, pois você está fazendo a comparação entre as referências (getClass() == obj) , ou seja, se elas referenciam o mesmo objeto, se vc quiser saber se elas são classes de mesmo tipo vc deve sobreescrever o método equals da superclasse Object, mas deixando o parâmetro genérico recebendo object:
@Override
public boolean equals(Object obj) {
if ((obj instanceof Idioma))
return true;
else
return false;
}
Muitíssimo grato… 100% entendido agora…