bonsoir tout le monde
je veux savoir s'il existe une manière d'instancier un bojet à part le constructeur "new"![]()
ET MERCI
bonsoir tout le monde
je veux savoir s'il existe une manière d'instancier un bojet à part le constructeur "new"![]()
ET MERCI
Je ne crois pas. Une variable peut faire référence sur un objet déjà instancié mais tu ne l'instancies pas vraiment. Donc "new" est la seule solution (je pense).
Nas'
Bonjour,
Si ton objet à un constructeur sans argument, tu peux utiliser une instanciation dynamique:
Le mieux est d'utilisé les interfaces
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Class c = Class.forName("nomDeLaClasse"); Object instance = c.newInstance();
Voir la javadoc de l'objet Class pour plus d'info.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Class<? extends MonInterface> c = Class<? extends MonInterface>("nomDuClasseQuiImplementeMonInterface"); MonInterface instance = c.newInstance(); instance.uneMéthodeDeMonInterface();
EDIT: Rajout du lien vers la javadoc
Il y a aussi la méthode clone.
La réflexion marche aussi avec les constructeurs qui ont des arguments.Envoyé par gronono
(de mémoire, sans les try/catch)
Par contre, c'est moins performant qu'avec new !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Class cl = MaClasse.class //tableau de classes des arguments Class[] classesArgs = new Class[] {ClassArg1.class, ClassArg2.class,}; //on récupère l'objet constructeur Constructor ctor = cl.getConstructor(classesArgs); //tableau d'arguments Object[] args = new Object[]{arg1, arg2,}; //instanciation Object instance = ctor.newInstance(args);
merci vraiment![]()
@MangeurVasqué :
Merci, je ne connaissais pas cette méthode.
Partager