Créer un tableau d’objects au moment de l’exécution en utilisant le nom de la classe en java

Nous soaps tous que nous pouvons créer un object à l’aide du nom de la classe au format chaîne. Comme si j’avais un nom de classe “Test”. En utilisant

Class.forName("Test").newInstance() 

Nous pouvons créer l’object de cette classe.

Ma question est la suivante: existe-t-il un moyen de créer un tableau ou une liste des objects en utilisant le nom de la classe? OU supposons que nous ayons un object de la classe et que nous puissions avec cet object créer le tableau ou la liste de tableaux de cet object.

Pour créer un tableau, vous pouvez utiliser java.lang.reflect.Array et sa méthode newInstance :

 Object array = Array.newInstance(componentType, length); 

Notez que le type de retour est juste Object car il n’y a aucun moyen de dire qu’il renvoie un tableau du type approprié, si ce n’est en le rendant une méthode générique … ce que vous ne voulez généralement pas qu’il soit. (Vous ne le faites certainement pas dans votre cas.) Même dans ce cas, cela ne int.class pas le problème si vous int.class dans la int.class .

Exemple de code:

 import java.lang.reflect.*; public class Test { public static void main(Ssortingng[] args) throws Exception { Object array = Array.newInstance(Ssortingng.class, 10); // This would fail if it weren't really a ssortingng array Ssortingng[] afterCasting = (Ssortingng[]) array; System.out.println(afterCasting.length); } } 

Pour ArrayList , ce concept n’existe pas vraiment: l’effacement de type signifie qu’un ArrayList ne connaît pas vraiment son type de composant, vous pouvez donc créer n’importe quel ArrayList . Par exemple:

 Object objectList = new ArrayList(); Object ssortingngList = new ArrayList(); 

Après la création, ces deux objects sont indiscernables en termes de types.

Vous pouvez utiliser Array

 Object xyz = Array.newInstance(Class.forName(className), 10); 

Il a une méthode newInstance (Class, int) :

Crée un nouveau tableau avec le type de composant et la longueur spécifiés. Invoquer cette méthode revient à créer un tableau comme suit:

  int[] x = {length}; Array.newInstance(componentType, x);