Pessoal estou com uma dúvida!
Sempre vejo um codigo assim
Comparator<? super E>
o que significa?
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!!!