Básico - Usando o método getClass() de Object

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…