Immaginate il seguente scenario:Riflesso per Classe di parametro generico in Java?
class MyClass extends OtherClass<String>{
String myName;
//Whatever
}
class OtherClass<T> {
T myfield;
}
E sto analizzando MiaClasse utilizzando la riflessione specificamente (MyClass.class).getDeclaredFields()
, in questo caso mi metterò i seguenti campi (e tipi, utilizzando getType() del campo):
myName --> String
myField --> T
Voglio ottenere il tipo effettivo per T, che è noto al runtime a causa dell'esplicita "String" nella notazione extends, come posso ottenere il tipo non genetico di myField?
EDIT DELIBERATO:
Sembra che la risposta è "non si può". Per coloro che potrebbero esaminare questa domanda in un secondo momento, raccomanderei l'utilizzo di Jackson (stavo cercando di farlo per generare JSON) e annotando le classi e i campi in modo tale che Jackson sia a conoscenza della gerarchia dell'ereditarietà e possa fare automaticamente ciò che la risposta corretta sotto suggerita.
La risposta non è che non puoi; puoi facilmente creare una mappa da parametri di tipo a argomenti di tipo esplicito. – Jeffrey