Generics?

Pessoal estou com uma dúvida!

Sempre vejo um codigo assim

Comparator<? super E>

o que significa?

Significa que este comparator serve para supertipos de E.

Olhe só:

[code]
public class Exemplo{

}

Comparator{
public int compare(Exemplo o1, Exemplo o2){

}
}[/code]

Qual a vantagem, possivelmente será sua próxima dúvida, e já a resposta, além de ser melhor “auto-documentável” vc não vai precisar ficar fazendo casts…

Então, pra ele e para todas as classes superiores?

Sim, da forma que está funciona para as classes que herdam dele tb.

Suponha que você tenha 3 classes:

Object, Animal, Dog onde Animal extends Object e Dog extends Animal.

Eu posso definir um operador "<=" dizendo que se A <= B, então A é uma superclasse ou superinterface de B (ou seja, Object <= Animal <= Dog), e analogamente, ">=" dizendo que se A >= B, então A é uma subclasse ou subinterface de B (ou seja, Dog >= Animal >= Object).

Quando escrevo:

Comparator<? super E>

é uma coisa parecida com escrever:

Comparator < X >= E > onde X é uma classe qualquer que é E ou então uma superclasse de E

e quando escrevo

Comparator < ? extends E >

é uma coisa parecida com escrever:

Comparator < X <= E > onde X é uma classe qualquer que é E ou então uma subclasse de E.

No cara!!

Valeu dimais!!!

Muito boa explicação!!!