Dúvida sobre uso de Generics na invocação de um método
5 respostas
bonfarj
Tive um problema ao compilar uma classe e descobri que era um bug do Java 5 (vejam aqui). Eles indicam um “workaround” que consiste no seguinte código:
this.<U>f1();
A minha dúvida é o que significa o uso do tipo de variável U na invocação do método f1(), Alguém sabe?
this.f1() retorna T, e você sabe que T extends X.
Em f2(), você precisa algo que retorne um tipo que estenda X (ou seja, U extends X).
Mas o compilador se atrapalha porque não entende que T (um parâmetro de tipo) é um tipo que estende X.
Para forçar isso, você usa this.f1 para explicitar que nessa invocação, T = U, e aí como U extends X está tudo bem.
jonatanpedro
Cara o “U” é uma classe especializada de qualquer tipo, o tipo q vc escolher, está em aberto.
Por exemplo:
Onde o “U” esta sendo o tipo de classe a sua escolha, O U é uma classe genérica.
Abração
bonfarj
thingol:
this.f1() retorna T, e você sabe que T extends X.
Em f2(), você precisa algo que retorne um tipo que estenda X (ou seja, U extends X).
Mas o compilador se atrapalha porque não entende que T (um parâmetro de tipo) é um tipo que estende X.
Para forçar isso, você usa this.f1 para explicitar que nessa invocação, T = U, e aí como U extends X está tudo bem.
Humm, saquei… na verdade eu já imaginava que fosse algo para “forçar”, mas achei melhor tirar a dúvida.
E jonatanpedro, a minha dúvida era quanto ao “” antes do método invocado, nunca tinha visto isso, mas uso Generics a bastante tempo, o código do sistema que faço usa amplamente.
Obrigado, pessoal!
jonatanpedro
Tranquilo, na verdade não tinha entendido a tua pergunta, depois q postei eu percebi,dae já era tarde, hehehe!
:oops:
bonfarj
jonatanpedro:
Tranquilo, na verdade não tinha entendido a tua pergunta, depois q postei eu percebi,dae já era tarde, hehehe!