Разница между method.getClass (). NewInstance () и SomeClass.class.newInstance ()? - PullRequest
0 голосов
/ 13 июня 2018

Недавно я начал немного возиться с размышлениями.Я столкнулся с проблемой, на которую я не могу найти никакого ответа.Я постараюсь объяснить как можно лучше, в чем проблема.

Во-первых, у меня есть метод, который я получил из рефлексии с аннотацией.Когда я пытаюсь вызвать этот метод, мне нужен экземпляр класса, в котором он находится.Это то, что я сделал, потому что это было бы проще всего сделать в моем проекте:

method.invoke(method.getClass().newInstance(), context);

Однако это не сработало.Исключение, генерируемое этим методом, равно NoSuchMethodException .Но когда я попытался просто получить класс с именем someClass , который непосредственно содержит метод, он не выдал исключение и успешно возвратил метод:

method.invoke(someClass.class.newInstance(), context);

Я надеюсь, что кто-то более опытный сможет прояснить ситуациюэто так, чтобы я мог учиться на этом и, надеюсь, использовать рефлексию в будущем более легко.

Заранее спасибо

- голландское желе

1 Ответ

0 голосов
/ 13 июня 2018

method.getClass() возвращает Method.class, объект класса для Method.Это так же, как например "ABC".getClass() возвращает String.class.

Что вы, вероятно, ищете, это method.getDeclaringClass().

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