Проверьте, является ли класс экземпляром списка - PullRequest
0 голосов
/ 25 апреля 2019

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

Я делаю:

Person person = new Person();
Class c = person.class;
for (Method m: c.getDeclaredMethods()) {
    // this gets me all the getters
    if (m.getParameterTypes().size() == 0) {
        Class<?> returnType = m.getReturnType()
        if (returnType.equals(java.util.List.class)) {
              // Can get here
              // But how to get the class that is used to parameterise the 
              // list.
        }
    }
}

Как получить класс, который используется для параметризации списка?

1 Ответ

1 голос
/ 25 апреля 2019

Вместо m.getReturnType() используйте m.getGenericReturnType().

Это возвращает вам Type.Затем вам нужно проверить, является ли это экземпляром ParameterizedType: если это так, приведите и извлеките параметры типа, используя getActualTypeArguments().

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