Erstellen Sie ein Array von Objekten zur Laufzeit mit dem Klassennamen in Java

8

Wir alle wissen, dass wir ein Objekt mithilfe des Klassennamens im Zeichenfolgenformat erstellen können. Wie ich einen Klassennamen "Test" habe. Verwenden Sie

%Vor%

Wir können das Objekt dieser Klasse erstellen.

Meine Frage ist, dass es eine Möglichkeit gibt, eine Array- oder Array-Liste der Objekte unter Verwendung des Klassennamens zu erstellen? ODER nehmen wir an, wir haben ein Objekt der Klasse und können mit diesem Objekt die Array- oder Array-Liste des Objekts erzeugen.

    
Waqas Ali 14.06.2013, 09:20
quelle

2 Antworten

15

Um ein Array zu erstellen, können Sie java.lang.reflect.Array und seine newInstance Methode:

%Vor%

Beachten Sie, dass der Rückgabetyp nur Object ist, weil es keine Möglichkeit gibt, auszudrücken, dass er ein Array des richtigen Typs zurückgibt, außer dass es eine generische Methode ist ... die Sie normalerweise nicht haben wollen . (Du sicherlich nicht in deinem Fall.) Selbst dann würde es nicht verkraften, wenn du in int.class übergeben würdest.

Beispielcode:

%Vor%

Für ArrayList gibt es kein solches Konzept wirklich - type löscht bedeutet, dass ein ArrayList seinen Komponententyp nicht wirklich kennt, also können Sie any ArrayList erstellen. Zum Beispiel:

%Vor%

Nach der Erstellung sind diese beiden Objekte hinsichtlich ihrer Typen nicht zu unterscheiden.

    
Jon Skeet 14.06.2013, 09:23
quelle
6

Sie können Array

verwenden %Vor%

Es hat eine Methode newInstance (Klasse, int) :

  

Erstellt ein neues Array mit dem angegebenen Komponententyp und der angegebenen Länge. Das Aufrufen dieser Methode entspricht dem Erstellen eines Arrays wie folgt:

%Vor%     
NINCOMPOOP 14.06.2013 09:23
quelle

Tags und Links