Generics?

5 respostas
matheus306

Pessoal estou com uma dúvida!

Sempre vejo um codigo assim

Comparator<? super E>

o que significa?

5 Respostas

B

Significa que este comparator serve para supertipos de E.

Olhe só:
public class Exemplo{
....
}

Comparator<Exemplo>{
  public int compare(Exemplo o1,  Exemplo o2){
    ...
  }
}

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..

matheus306

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

B

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

T

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.

matheus306

No cara!!

Valeu dimais!!!

Muito boa explicação!!!

Criado 23 de setembro de 2008
Ultima resposta 23 de set. de 2008
Respostas 5
Participantes 3