Ich versuche, so etwas zu tun:Java generische List <>
1. Ansatz
Type ty = entityType.getEntityClass(); // could be e.g. String.class
List<ty> list;
2. Ansatz
Class cl = entityType.getEntityClass(); // could be e.g. String.class
List<cl> list;
jedoch Compiler sagt einfach "Nein".
Gibt es eine Möglichkeit, den generischen Typ <T>
von z.B. eine dynamische java.util.List nur, indem sie z. String.class
oder foo.getClass()
?
...
Was ich eigentlich bin versucht, eine Liste von einem bestimmten Parameter des Typs zu tun initialisiert EntityTypeEnum
oder es ist Class
Eigenschaftswert.
Konstruktive Kritik ist willkommen. Vielen Dank!
Anzahl: (als Antwort von Andy Kommentar)
Class cl = String.class;
List<cl> list;
..ist auch nicht arbeiten!
List<String> list;
.. funktioniert natürlich.
Was ist also der Unterschied zwischen String
und String.class
?
Oder gibt es einen Weg, um den Wert zu setzen wie:
public enum EntityTypeEnum {
ARTICLE(Article)
..
"Allerdings Compiler sagt einfach "nein"." Denn dafür gibt es keine Generika. Sie dienen zum Erzwingen der Typsicherheit zur Kompilierzeit; Wenn Sie den Typ erst zur Laufzeit kennen, können Generika Ihnen nicht helfen. –
Ich habe deinen Standpunkt verstanden. Stellen Sie sich vor, dass der Typ zum Zeitpunkt der Kompilierung bekannt ist: Class cl = String.class; Liste Liste; Es würde immer noch nicht kompiliert werden. –
Technisch gesehen ist das kein kompilierbarer konstanter Ausdruck. Aber Sie können das einfach nicht: Generika können nicht auf der * Variable * basieren, sondern auf dem * Typ * der Variablen. –