bonsoir tout le monde
je veux savoir s'il existe une manière d'instancier un bojet à part le constructeur "new" ;)
ET MERCI
Version imprimable
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 interfacesCode:
1
2 Class c = Class.forName("nomDeLaClasse"); Object instance = c.newInstance();
Voir la javadoc de l'objet Class pour plus d'info.Code:
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.Citation:
Envoyé par gronono
(de mémoire, sans les try/catch)
Par contre, c'est moins performant qu'avec new !Code:
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 :D
@MangeurVasqué :
Merci, je ne connaissais pas cette méthode.