Ich habe die folgende Java-Klasse
%Vor%Ich implementiere die folgende Methode:
%Vor% Wie kann ich eine Instanz des Typs 'T' für diese Klasse erstellen?
Ich habe versucht, die T-Typ-Klasse zu definieren und "myInstance.newInstance ()" zu verwenden, aber ich konnte sie nicht definieren. Die Klasse als Parameter an die Methode zu senden und die Methode "newInstance ()" zu verwenden, funktioniert, aber ich möchte dies tun können, ohne sie als Parameter übergeben zu müssen. Danke!
Java-Generics werden durch Löschen implementiert, was bedeutet, dass es zur Laufzeit keine Parametertyp-Informationen geben wird. Sie werden die T-Klasse zur Laufzeit nicht kennen (es gibt keine solche T.class). Sie müssen also das Objekt Class
als Methodenparameter übergeben, um das zu tun, was Sie wollen.
Sie verlieren alle Informationen über den Typ, wenn Sie das Objekt in die generische Klasse / Funktion übergeben.
Sie können dies nur tun - übergeben Sie Class
object an den Konstruktor \ function:
Es ist möglich, die Klasse zu extrahieren, an die T in einer bestimmten Unterklasse gebunden war, obwohl das nicht sehr einfach ist:
Ich habe eine etwas bessere Version des Codes in diesem Beitrag hier:
Dieser Ansatz ist auch nicht sehr schnell. Wenn Leistung ein Problem darstellt, könnte eine rauere Alternative sein, T und eine Instanz der Klasse & lt; T & gt; auch dort, wo du brauchst.
Natürlich müssen Sie, nachdem Sie eine solche Klasse haben, Reflektion verwenden, um sie zu instanziieren.