Я получаю следующее исключение при использовании getConstructor () для переменной типа Class: java.lang.NoSuchMethodException: Main $ Person. ()
Методы getConstructors () и getDeclaredConstructors () работают нормально,Я ожидаю возврата кода: public Main $ Person (Main)
Что может вызвать это и как я могу предотвратить это? Кроме того, что является параметром 'Main', перечисленным ввсе конструкторы? Это ссылка на экземпляр, который его создал ??
См. Код и вывод ниже: import java.lang.reflect. *;
открытый класс Main {
public class PersonSuper
{
public int superage;
public void supersampleMethod(){}
private PersonSuper(){System.out.println("PersonSuper no argument constructor");}
}
public class Person extends PersonSuper
{
public int age;
public void sampleMethod(String var){}
public void sampleMethod2(){}
private Person (int ageInput){this.age = ageInput;}
public Person(){}
}
public static void main(String []args) throws Exception{
try { Class<Person> clss = Person.class;
Constructor c[] = clss.getConstructors();
for (int i = 0; i < c.length; i++)
{System.out.println(c[i]);}
Constructor c2[] = clss.getDeclaredConstructors();
System.out.println();
for (int i = 0; i < c2.length; i++)
{System.out.println(c2[i]);}
System.out.println();
Constructor con = clss.getConstructor(); //This is the code that is not working...
System.out.println(con); //This is the code that is not working...
}
catch(Exception e)
{System.out.println(e.toString());}
}
}
Результаты: public Main $ Person (Main)
public Main $ Person (Main)
private Main $ Person (Main, int)
java.lang.NoSuchMethodException: Main $ Person. ()
... Программа завершена с кодом выхода 0
Нажмите клавишу ВВОД, чтобы выйти из консоли.