Foo<?> via Class.forName("de.xy.Bar") - wie?

Kryptaesthesie

Erfahrenes Mitglied
Hallo,

ich möchte in folgendem Codeschnipsel gerne an den Stellen, wo die beiden Fragezeichen sind, auf die Klasse c verweisen.
Wie kann ich das machen? c.class geht ja nicht ...

Code:
Class c = Class.forName(classId).getClass();   //AbstractMainSearchResultEntry
GenericType<TopCubeResponse<?>> assemblyType = new GenericType<TopCubeResponse<?>>(){};

In classId steht "de.package.Foo".

Vielen Dank schon mal für eure Hilfe!
Gruß
Gerrit
 
Wenn ich das richtig verstehe, was hier gefragt wird, dann muss ich leider sagen, dass das gar nicht geht. Generics lassen sich in der Form nicht dynamisch einfügen, da das, was hier passiert, erst zur Laufzeit passieren würde und es gibt keine Generics zur Laufzeit. Das ist lediglich ein Sprachfeature, das dem Compiler ermöglicht zur Compilezeit die Typsicherheit zu gewährleisten und somit bereits beim Kompilieren eine falsche Benutzung seitens der Programmierung zu verhindern. Später zur Laufzeit sind das alles nur stupide Casts in die jeweilige Typen. Und damit Generics genutzt werden können, muss der entsprechende Typ oder das Wildcard bereits beim Kompilieren bekannt sein und das wiederum heißt hardcoded vorhanden sein. Der kompilierte Code wird aber erst viel später ausgeführt, daher ist zu dem Zeitpunkt gar nicht bekannt, was da eigentlich gefordert wird, wie soll man dann also darauf prüfen...
 
Zuletzt bearbeitet:
Vielen Dank für eure Antworten.
Ich habe mich dann wohl oder übel doch dazu entschlossen eine if-else-Kette zu implementieren und dann in die entsprechende Klasse als Generic zu verwenden.
 

Neue Beiträge

Zurück