Как использовать Class.getMethod в качестве геттера? - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь использовать Class.getMethod в качестве геттера.

Я пытался:

//This works fine
Class<?> c = Class.forName("Cat");
//This is not working 
Cat cat = c.getMethod("getCat");

Ответы [ 2 ]

4 голосов
/ 09 мая 2019

Класс Class предлагает вам такие методы, как

  • newInstance() для вызова конструктора по умолчанию
  • или getDeclaredConstructors()

Таким образом, вы можете создавать экземпляры объектов из объектов Class. См. здесь для официальной документации, как использовать отражение для создания экземпляров.

Возможен только способ getMethod(): если в классе Cat есть параметр менее static с таким именем, то

Cat cat = c.getMethod("getCat").invoke(null);

может сработать.

Реальные ответы здесь:

  • когда вы новичок, не не предполагайте , как все может работать. Прочитайте документацию или хороший учебник
  • когда вы новичок: не используйте отражение. Отражение может легко свести с ума взрослых зрелых программистов на Java. Это действительно запретная зона для новичков.
2 голосов
/ 09 мая 2019

getMethod возвращает объект java.lang.reflect.Method.Затем вам нужно вызвать его:

Cat cat = c.getMethod("getCat").invoke(null);
// Here ------------------------^
...