Antes de mais nd quero dizer que procurei muito antes de criar este tópico, portanto peço a ajuda de links ou até mesmo esclarecimentos da questão!
public static [color=red] Collection[/color] getMethod(Collection coll){}
Gostaria muito de entender este conceito de limites de retornos, que não acho em lugar algum. Na API não entendi muito sobre.
É isso.
Muito Obrigado a quem puder ajudar!
no exemplo que vc postou vc deve passar uma Collection como argumento no método desde que esta collection implemente a interface CharSequence
e o tipo de retorno vc deve atribuir tb a uma Collection que implemente a interface CharSequence
exemplo, esta seria uma chamada válida
//chamada válida por String implementa a interface CharSequence
Collection<String> colecao = getMethod(new ArrayList<String>());
esta seria uma chamada inválida
//chamada inválida porque Integer não implementa a interface CharSequence
Collection<Integer> colecao = getMethod(new ArrayList<Integer>());
//chamada inválida porque o tipo de retorno implementa a classe String mas Integer não implementa a interface CharSequence
Collection<String> colecao = getMethod(new ArrayList<Integer>());
ressaltando que a expressão pode ser um tipo E que implemente ou extenda a classe CharSequence(neste caso CharSequence é uma interface)
Não estou entendo a expressão em vermelho, qto ou elementos genéricos “E” td bem. O que me fez quebrar a cabeça é esse tipo de retorno.
Pq são duas expressões, e sendo assim não pra servem, são intervalos de classes q serão permitidas como retorno?? no Livro da Kathy não tem nd sobre isso, e mesmo assim tem um exercicio sobre!
vou tentar explicar
esta primeira parte [color=red]() [/color] vc define quem é o tipo genérico E(No exemplo o tipo E pode ser qualquer classe que extenda a classe CharSequence ou implemente a interface CharSequence)
no caso do exemplo CharSequence é uma interface
a segunda parte color=red [/color] é o tipo de retorno e este tipo de retorno é uma Collection mas esta Collection deve ser de alguma classe que implemente ou extenda a CharSequence (lembra na primeira parte vc definiu quem é o tipo E)
vou colocar outro exemplo:
//aqui eu defino que E deve ser algum tipo que seja Number ou extenda a classe Number ex.(Integer, Float, Double)
//e o meu tipo de retorno é um ArrayList<E> ou seja eu posso retornar um ArrayList<Number>, ArrayList<Integer>, ArrayList<Float> ou ArrayList<Double>
public static <E extends Number> ArrayList<E> listar() { }
[quote=vmsb11]vou tentar explicar
esta primeira parte [color=red]() [/color] vc define quem é E(No exemplo o tipo E pode ser qualquer classe que extenda a classe CharSequence ou implemente a interface CharSequence)
a segunda parte color=red [/color] é o tipo de retorno e este tipo de retorno é uma Collection mas esta Collection deve ser de alguma classe que implemente ou extenda a CharSequence (lembra na primeira parte vc definiu quem é o tipo E)
[/quote]
Não se trata de intervalos então!
Putz… por isso que não tem nd no livro explicando, pois não tem o que explicar!!! Cara, batata! Valeu mesmo por esclarecer! não sabia que era possivel agregar coringas ao elemento genérico declarado .