par exemple:
public class Test {
public static void main(String[] args) throws Exception {
Car c= (Car) Class.forName("Car").newInstance();
System.out.println(c.getName());
}
}
class Car {
String name = "Default Car";
String getName(){return this.name;}
}
code clair.
Mais, si j'ajoute un constructeur avec des paramètres, certains comme ceci:
public Car(String name)
{this.name = name;}
Je vois: Java.lang.InstantiationException
Donc, non, je ne sais pas, comment passer constructeur avec params.
S'il vous plaît, aidez.
Vous devez dire quel constructeur vous souhaitez utiliser un argument pass it.
Car c = Car.class.getConstructor(String.class).newInstance("Lightning McQueen");
Si vous manipulez des super/sous-classes, ou pour une raison quelconque, vous ne savez pas exactement quelle classe doit être instanciée, la méthode forName () sera également requise:
(ClassName) Class.forName([name_of_the_class])
.getConstructor([Type]).newInstance([Constructor Argument]);
Cela suppose que name_of_the_class est une variable transmise. De plus, si la classe est dans un package, même si ce package a été importé, vous devez toujours stipuler explicitement le package dans forName () (je pense que je suis nouveau dans tout cela).
Class.forName([name_of_package].[name_of_class])