Por que conjuntos como TreeSet não limitam o tipo de "elemento"?

0 respostas
buiutripa

Considerando “elemento” (E) como sendo o tipo de objeto a ser armazenado na Collection, poderíaos fazer:

import java.util.*;

class A {}
class B {
   public static void main(String[] args) {
      Set<A> s = new TreeSet<A>();
      s.add(new A());
      s.add(new A());
   }
}

E receber um java.lang.ClassCastException na segunda chamada ao método add().

A declaração de TreeSet não poderia ser?:

public TreeSet<E extends Comparable> { ... }

De modo que só pudéssemos criar conjuntos classificados (sorted, como TreeSet ou TreeMap) de classes que passassem no teste “é-um” Comparable? Fazendo com que o erro fosse um em tempo de compilação e não de execução? Isso traria algum efeito colateral que eu não percebo?

Daí quando fosse chamado o construtor sobrecarregado de TreeSet que usa um Comparator como argumento, ele daria preferência à classificar de acordo com o Comparator.

Valeu galera!
buiutripa

Criado 30 de julho de 2009
Respostas 0
Participantes 1