Mein Projekt gehören Reflexion und ich bin derzeit Umgang mit generischen Typen. Ich habe es geschafft, den generischen Typ aus einer Liste zu erhalten (java.util.List) mit:Java erhalten generische Art der Sammlung
if(originalField.getGenericType() instanceof ParameterizedType){
ParameterizedType pt = (ParameterizedType) originalField.getGenericType();
Class<?> subClass = (Class<?>) pt.getActualTypeArguments()[0];
}
Ich habe auch eine Collection<String>
und es stellt sich heraus, dass Sammlung kann NICHT zu ParameterizedType gegossen werden.
Hat jemand eine Idee, wie man die Zeichenfolge (oder welchen Typ auch immer) aus der Sammlung holt?
Ich habe über Java Löschungen gelesen, also bin ich mir dessen bewusst, aber nachdem ich die generischen aus der Liste, dachte ich, dass vielleicht jemand einen anderen "Trick" kennt.
Danke.
EDITED: Ich Iterieren mit allen Feldern der Klasse über:
for (Field originalField : someClass.getDeclaredFields())
Und dann, wenn ich etwas List<String>
Field, mit dem obigen Code gegenüber ich die String
als Subklasse bekommen Variable.
Können Sie etwas mehr Code zeigen. Es ist nicht klar, was hier vor sich geht. Wenn die Methode für "List" funktioniert, gibt es einen Grund, warum es nicht für "Collection" funktioniert. –
Auch wenn Sie den generischen Typ des Feldes erhalten, können Sie nicht viel damit machen. Was ist der Zweck in Ihrem Fall? –
Rohit Jhon - der Code funktioniert für die Liste, aber nicht für die Sammlung. Während der Laufzeit wurde gesagt, dass Collection nicht in ParameterizedType umgewandelt werden kann (wie ich in der Frage erwähnt habe). Sotirious Delimanolis - Der Zweck dieses Codes ist es, Code zu generieren, so dass ich den Typ des generischen – Gumba