Я изучаю некоторые функции отражения в Java, и у меня возникла странная проблема при тестировании функции getConstructor()
с этим классом.
public class IntegerSequence {
private Integer[] elements;
private int size;
private int MAX_SIZE = 100;
public IntegerSequence() {
elements = new Integer[MAX_SIZE];
size = 0;
System.out.println("Hello Guys");
}
}
Функция возвращает допустимый конструктор, но " Привет, ребята "сообщение никогда не печатается.
Кроме того, если я удаляю конструктор IntegerSequence
, он также возвращает допустимый конструктор и не выдает никаких исключений, даже если в классе IntegerSequence
больше никого нет.
Я читал, что getConstructor()
возвращает только конструктор, закодированный в классе, а не тот, который был автоматически создан Java, так что я немного растерялся.
Вот код, который использует функция и ее вывод:
public void invokeDefaultConstructor(Class c){
Constructor build = null;
try {
build = c.getConstructor();
} catch (NoSuchMethodException e) {
System.out.println(e);
e.printStackTrace();
}
System.out.println(build.toString());
System.out.println(build.getName());
}
консольный вывод:
public generics.IntegerSequence()
generics.IntegerSequence
Знаете ли вы, что может вызвать такое поведение?