Je voudrais utiliser Class.newInstance()
mais la classe que j'instancie n'a pas de constructeur nul. J'ai donc besoin de pouvoir passer des arguments de constructeur. Existe-t-il un moyen de le faire ?
Réponses
Trop de publicités?myObject.getClass().getDeclaredConstructors(types list).newInstance(args list);
Edit : d'après les commentaires, il semble que pointer les noms de classes et de méthodes ne soit pas suffisant pour certains utilisateurs. Pour plus d'informations, jetez un coup d'oeil à la documentation de obtenir un constucteur et l'invoquer .
En supposant que vous avez le constructeur suivant
class MyClass {
public MyClass(Long l, String s, int i) {
}
}
Vous devrez sélectionner votre intention d'utiliser ce constructeur de la manière suivante :
Class c = MyClass.class;
Class[] cArg = new Class[3]; //Our constructor has 3 arguments
cArg[0] = Long.class; //First argument is of *object* type Long
cArg[1] = String.class //Second argument is of *object* type String
cArg[2] = int.class; //Third argument is of *primitive* type int
Long l = new Long(88);
String s = "text";
int i = 5;
classToLoad.getDeclaredConstructor(cArg).newInstance(l, s, i);
Ne pas utiliser Class.newInstance()
; voir ce fil : Pourquoi Class.newInstance() est-il mauvais ?
Comme d'autres réponses le disent, utilisez Constructor.newInstance()
à la place.
Vous pouvez obtenir d'autres constructeurs avec getConstructor(...) .
- Réponses précédentes
- Plus de réponses