Отражение Java: как работают методы Method.getGenericXXXXX? - PullRequest
4 голосов
/ 16 мая 2011

Я только что заметил, что есть Method.getGenericReturnType(), а также Method.getReturnType() и аналогичные пары для типов исключений и типов параметров.работал через стирание типа.Так как же эти методы будут работать во время выполнения?(и что бы я использовал их во время выполнения?)

Ответы [ 2 ]

6 голосов
/ 16 мая 2011

Обобщения, которые имеют конкретные типы, являющиеся частью объявлений (методы, поля, классы, аргументы), сохраняются.

Таким образом, вы можете получить типы из этой декларации

 public List<String> toString(List<Foo> foos) { .. }

Но вы не можете из этого кода:

public List<E> transform(List<E> list) {
  // E is not accessible at runtime
}
1 голос
/ 16 мая 2011

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

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