Instanceof para um tipo especifico de List

3 respostas
B

Gostaria de fazer um instanceof para um determinado tipo de List…
Como eu posso fazer isso?

Poderia ser algo tipo

(element instanceof List) //isso não funciona

abraço

3 Respostas

Marky.Vasconcelos

Ixe… eu acho que não da para fazer isso por que isso ao certo é:

if(List.class.isInstance(element))

O que voce pode fazer é

if(element instanceof List){
if(list.get(0) instanceof TipodeObjeto){
victorwss

O que você escreveu não é muito claro.

A) Você quer saber se um dado elemento da lista é String ou Integer?
Se sim, isso é fácil. Pegue o elemento da lista (via método get, iterator, ou alguma outra forma qualquer) e faça o teste do instanceof.

B) Você quer usar algo parecido com instanceof para diferenciar List<String> de List<Integer>?
Se sim, sinto muito isso não é possível atualmente. Você tem que bolar alguma gambiarra para contornar este problema (é o que se faz atualmente). Os tipos genéricos são apagados pelo compilador (isso é chamado de type-erasure), e a JVM não conhece eles em tempo de execução. Esse problema é bem conhecido e a solução dele (chamado de reificação) foi esperado para o Java 7, mas provavelmente vai acabar sendo adiado para o Java 8, ou para nunca.

Marky.Vasconcelos

Isso por exemplo é uma gambiarra

if(element instanceof List){
if(((List<?>)element).get(0) instanceof TipodeObjeto){
//trabalha com a lista List<TipodeObjeto> aqui
Criado 9 de dezembro de 2008
Ultima resposta 9 de dez. de 2008
Respostas 3
Participantes 3