Interface Comparator<T> em Classes Abstratas

4 respostas
Rangel_Zutin

Ola pessoal,

estou com uma duvida em relacao ao uso da interface Comparator em Classes Abstratas. Segue minha classe Account.

public abstract class Account implements Comparable<Account>, Comparator<Account> {

apos implementar o metodo compare:

public int compare(Object account1, Object account2) {

tenho um erro dizendo que nao estou fazendo overide do metodo. Ja tentei usar a notaçao @Override mas continuei com o mesmo erro.

Name clash: The method compare(Object, Object) of type Account has the same erasure as compare(T, T) of type Comparator<T> but does not override it	Account.java

Estou usando Collection e aprendendo como usar as interfaces Comparable<T> e Comparator<T>.

Obrigado a todos.

4 Respostas

ViniGodoy

Se seu T é um Account, então o método compare deve ser:

public  int compare(Account account1, Account account2) {

E não Object, como você declarou.

Rangel_Zutin

Valeu Vini! Resolveu meu problema. Apenas para entender os conceitos, porque eu nao posso generalizar o metodo ao nivel do Objeto nesse caso? Apenas gostaria de entender melhor se puder comentar. Obrigado.

ViniGodoy

Foi você quem disse que essa classe implementava Comparator<Account>, portanto, o método deve ter Account como parâmetro. Se quiser deixar como object, faça a classe ser um Comparable<Object>. Se quiser deixar para Cachorro, faça a classe ser Comparable<Cachorro>

Rangel_Zutin

Entendido. Brigadao!

Criado 25 de março de 2010
Ultima resposta 25 de mar. de 2010
Respostas 4
Participantes 2