Ответ 1
Вам нужно сказать, какой конструктор вы хотите использовать для передачи аргументов.
Car c = Car.class.getConstructor(String.class).newInstance("Lightning McQueen");
например:
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;}
}
очистить код.
Но, если я добавляю конструктор с параметрами, некоторые вроде этого:
public Car(String name)
{this.name = name;}
Я вижу: java.lang.InstantiationException
Итак, нет, я не знаю, как пропустить конструктор с параметрами.
Пожалуйста, помогите.
Вам нужно сказать, какой конструктор вы хотите использовать для передачи аргументов.
Car c = Car.class.getConstructor(String.class).newInstance("Lightning McQueen");
Если вы обрабатываете супер/подклассы или по какой-либо причине не знаете точно, какой класс должен быть создан, вам также понадобится метод forName():
(ClassName) Class.forName([name_of_the_class])
.getConstructor([Type]).newInstance([Constructor Argument]);
Это предполагает, что name_of_the_class является переданной переменной. Кроме того, если класс находится в пакете, даже если этот пакет был импортирован, вам все равно необходимо явно указать пакет в forName() (я думаю, я новичок во всем этом).
Class.forName([name_of_package].[name_of_class])