получить класс из java.util.List <SomeType> - PullRequest
7 голосов
/ 27 июля 2010

как получить класс из этого выражения java.util.List

Ответы [ 3 ]

6 голосов
/ 27 июля 2010

Я предполагаю, что вы хотите знать класс шаблона List во время выполнения, и короткий ответ: вы не можете.Обобщения Java используются только во время компиляции: аргументы шаблона стираются перед созданием байтового кода.Это называется " тип стирания ".

6 голосов
/ 27 июля 2010

Если ваш List определен с параметром конкретного типа, например:

private class Test {
   private List<String> list;
}

, вы можете получить его с помощью отражения:

Type type = ((ParameterizedType) Test.class.getDeclaredField("list")
     .getGenericType()).getActualTypeArguments()[0];

Однако, еслитип не известен во время компиляции, он потерян из-за стирания типа

0 голосов
/ 29 марта 2017

Вы можете попробовать что-то вроде этого:

Class<List<Foo>> cls = (Class<List<Foo>>)(Object)List.class
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...