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
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);