[Débutant] Créer une instance avec le nom d'une classe
Bonjour à tous,
comment peut-on creer une instance d'une classe passée en paramètre ? Y'a t'il une méthode facile ? Voici ce que j'ai trouvé :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
protected final void setMover(Class agentMoverClass) {
Class [] paramsType = new Class[2];
Object [] params = new Object[2];
Constructor constructor;
AgentMover mover;
paramsType[0] = Class.forName("Agent");
paramsType[1] = Class.forName("Simulator");
constructor = agentMoverClass.getConstructor(paramsType);
params[0] = this; /* an instance of Agent */
params[1] = simulator; /* an instance of Simulator */
mover = (AgentMover) constructor.newInstance(params);
this.mover = mover;
} |
Je trouve ca assez lourd. Une idée ?
Merci
Re: [Débutant] Créer une instance avec le nom d'une classe
Salut,
Citation:
Envoyé par Quetzalcoatl
Je trouve ca assez lourd. Une idée ?
Si tu veux faire appel au constructeur avec des paramètres tu peux difficilement faire plus court (et encore dans ton code il n'y a aucune gestion des erreurs).
Par contre si tu utilises le constructeur par défaut et que tu définis des accesseurs dans ton interface AgentMover, tu peux encore simplifier le tout :
Code:
1 2 3 4 5 6 7 8 9 10
| protected final void setMover(Class agentMoverClass) throws Exception {
Object object = agentMoverClass.newInstance();
if (object instanceof AgenMover) {
AgentMover mover = (AgentMover) object;
mover.setAgent(this);
mover.setSimulator(simulator);
this.mover = mover;
}
} |
a++