getConstructor () возвращает конструктор, который не реализован - PullRequest
0 голосов
/ 10 января 2020

Я изучаю некоторые функции отражения в 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

Знаете ли вы, что может вызвать такое поведение?

1 Ответ

2 голосов
/ 10 января 2020

Функция возвращает допустимый конструктор, но сообщение «Привет, ребята» никогда не печатается.

Это ожидается, поскольку вы никогда не вызываете конструктор в любом месте. Вы получаете конструктор только из класса.

Я читал, что getConstructor () возвращает только конструктор, закодированный в классе, а не тот, который был автоматически создан Java

Я не знаю, где вы это читаете. Джавадо c определенно не говорит этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...