Dúvida sobre comparações genéricas (compareTo)

2 respostas
W

Olá Pessoal.

Estou recebendo como parâmetros uma lista genérica e um objeto (List lista, Object objeto). Preciso comparar um determinado elemento dessa lista com o objeto, algo do tipo lista.get(0).compareTo(objeto) … Isso é possível? (obs.1: a comparação tem que ser genérica para poder ser utilizada para diferentes tipos de objetos; obs.2: sei que a lista é formada por objetos do mesmo tipo que o parâmetro “objeto”, portanto isso não é um problema)

Abraço,
Wallace

2 Respostas

rissato

Sim, desde que sua classe “Objeto” implemente a interface Comparable.

Lavieri

Funciona assim

//troque void por um retorno caso seu método tenha algum tipo de retorno
public <E extends Comparable<E>> void seuMetodo(List<E> lista,E object) {
    //... lista.get(0).compareTo(object);

ai vc pode tranquilamente lista.get(index).compareTo(object)

...

Lembrando da sua observação...

WHS:
obs.2: sei que a lista é formada por objetos do mesmo tipo que o parâmetro "objeto", portanto isso não é um problema)

por exemplo vc consegue usar...
//por exemplo vc consegue usar...
       List<String> palavras = new ArrayList<String>(0);
       palavras.add("java");
       palavras.add("guj");
       
       seuMetodo(palavras,"teste");

e quando os tipos são distintos, vc não consegue usar o método, por exemplo, se vc enviar um BigInteger, que implementa Comparable, não da pra usar com uma lista de strings...

seuMetodo(palavras,BigInteger.ONE); //<== não compila ^^
Criado 17 de março de 2009
Ultima resposta 17 de mar. de 2009
Respostas 2
Participantes 3