// INSIRA A DECLACAO AQUI{Collection<E>longWords=newArrayList<E>();// faz umas coisinhas com a listareturnlongWords;}
o que eu não entendi direito foi a explicação do porque a letra G esta errada.
G. static public <E super CharSequence> Collection<E> getLongWords(Collection<E> coll)
Para mim não poderia ser porque String não é uma superclasse de CharSequence. Mas o livro justifica falando que a resposta não faz sentido porque <E super CharSequence> deveria usar um coringa e não uma variável de tipo como E. Porque??
Eu vi que não pode, nem compilar o trem compila. Mas minha pergunta é: porque não pode?? Porque do jeito que eu entendo (que visivelmente esta errado de alguma forma) <T super Classe> quer dizer que T tem que ser uma superclasse de Classe, assim como <T extends Classe> quer dizer que Classe tem que ser uma subclasse de Classe. Então porque <T extends Classe> é válido e <T super Classe> não?
L
luBSPJ
Bem, para o dia a dia o importante é saber que não funciona. E para a evolução é bom saber porque não pode. E eu te digo que desde que você postou tenho perdido um tempinho tentando chegar a conclusão hehe
Ainda não consegui chegar a uma conclusão que seja lógica e correta e que eu consiga te explicar aqui. Mas achei um post no forum do java com a mesma pergunta
E la eles dão outro link que te encaminha para a definição da linguagem (mais precisamente para o item 4.4) e ai o negócio começa a ficar difícil de entender e hoje realmente não estou inspirado para isso hehe :razz:
mas já é um ponto de partida eheh
L
luBSPJ
Ah, só para constar, a coisa mais legal que achei la foi a possibilidade de fazer métodos assim:
Ou seja, um método que aceita um parâmetro que tem que ser Serializable, Comparable e Cloneable… oOO
Eu não sabia que isso era possível… com certeza vou dar um jeito de usar umas coisas dessas aqui hehehe
M
mateusbrumPJ
Por que o tipo do método apenas aceita CharSequence para cima, ou seja apenas CharSequence e Object.
String é CharSequence para baixa, caso <E extends CharSequence>, seria válido neste caso.
<? super ALGO> ----> ALGO e seus antecessores;
<? extends ALGO> ----> ALGO e seus sucessores;
L
luBSPJ
Mateus, na real o que eu entendi é que ela queria saber por que é possível haver isso: