Вы можете использовать метод newInstance().
c.newInstance();
Создает исключение.
Выход:
Caused by: java.lang.NoSuchMethodException: java.lang.Integer.<init>()
Update:
Для класса, которые не имеют значения по умолчанию (не параметризированный) конструктор, вы не можете создать экземпляр, не зная его тип. Для других см. Приведенный ниже пример и его вывод.
public static void main(String[] args) throws InstantiationException, IllegalAccessException {
Class stringClass = String.class;
Class integerClass = Integer.class;
try {
System.out.println(stringClass.getConstructor());
Object obj = stringClass.newInstance();
if (obj instanceof String) {
System.out.println("String object created.");
}
System.out.println(integerClass.getConstructor());
obj = integerClass.newInstance();
if (obj instanceof Integer) {
System.out.println("String object created.");
}
} catch (NoSuchMethodException e) {
// You can not create instance as it does not have default constructor.
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
}
Выход:
public java.lang.String()
String object created.
java.lang.NoSuchMethodException: java.lang.Integer.<init>()
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getConstructor(Unknown Source)
at xyz.Abc.main(Abc.java:15)
В ответ на похороненный комментарий: типы времени компиляции - это компиляция. * Невозможно объявить переменную «c» * для произвольного объекта класса. Вам придется обрабатывать полученный объект (как бы это ни было), как наиболее общий тип покрытия (например, «Object») и/или специализировать-приведение по мере необходимости (например, '(Integer) i') и/или использовать отражение , – user2864740
в ваших комментариях вы всегда просите имя класса - возможно, вы ищете 'java.lang.Class.getName()' ?? –
Начните с ['Class # isAssignableFrom'] (https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#isAssignableFrom-java.lang.Class-), чтобы определить, данный «класс» может быть присвоен другому типу класса, например 'c.isAssignableFrom (Integer.class)', это, по крайней мере, скажет вам, является ли данный класс или совместимым. – MadProgrammer