Imprimir o tipo genérico

10 respostas
P

Oi,

eu tenho o seguinte método:

private <INKEY,INVALUE,OUTKEY,OUTVALUE>
	void runNewMapper(final JobConf job,
			final BytesWritable rawSplit,
			final TaskUmbilicalProtocol umbilical,
			TaskReporter reporter)
	throws IOException, ClassNotFoundException, InterruptedException 
	{}

e gostava de imprimir o tipo genérico que estou passando. Por exemplo:

System.out.println(INKEY);

e aparecesse por exemplo,

Long

Como faço?

Obrigado

10 Respostas

InSeOfKn

Isso não é possível! Os genéricos só é usado pelo compilador ele não passa para os bytecode para serem usados em tempo de execução

De uma lida nesse link do blog da Caelum

lá é explicado direitinho!

Até!

[editado] problema com formatação BB[/editado]

drigo.angelo

BB code fail heeheh

InSeOfKn

Estranho… eu visualizo e mostra certinho e Desabilitar formatação BB nesta mensagem ta desmarcada não sei o que ta acontecendo! :frowning:

P

Eu li o artigo, mas eu não consigo tirar alguma ajuda dele.

No teu artigo diz que é impossível, mas então métodos como

java.lang.reflect.Field#getGenericType()
ParameterizedType#getActualTypeArguments()

para que servem?

InSeOfKn

Olha fiz o teste com o primeiro e ele me retornou exatamente o parâmetro no seu caso seria INKEY

Vou testar o segundo agora!

P

Eu também consigo retornar INKEY.

O problema é que ás vezes o INKEY é String, ou Long, ou Integer, ou Object.

Eu gostaria de imprimir os valores String, Long, etc…, e não INKEY.

drigo.angelo

VÊ se da certo (acho que não vai, mas não custa tentar :P)

System.out.println(INKEY.class);
InSeOfKn

Não não da!

Não consegui testar o getActualTypeArguments() não sei como conseguir um objeto do tipo ParameterizedType!

mas o motivo para isso não funcionar ta explicado no link do meu primeiro post e nesse aqui

Mas se for necessário mesmo saber o tipo vais ter que passar um Class como parâmetro ou se um parâmetro do desse tipo já for passado e só da um .class nele!

Até!

P

Que eu saiba não há mesmo hipótese. :frowning:

InSeOfKn

Crio eu que não! pois quando é compilado o código fica como se nunca tivesse genéricos, nunca investiguei a fundo mas foi o que encontrei na pesquisa que eu fiz quando tive o mesmo problema!

Até a próxima!

Criado 26 de janeiro de 2011
Ultima resposta 26 de jan. de 2011
Respostas 10
Participantes 3