Мне нужно иметь возможность получить класс / тип Object
, присутствующий в ArrayList<TYPE>
, возвращенный Method method
через отражение.
При вызове:
Class<?> methodReturnType = method.getReturnType();
System.out.println("Method return type: " + methodReturnType);
для метода, который возвращает ArrayList<String>
Я получаю:
class java.util.ArrayList
, который не включает информацию о типе generi c : String
.
Я полагаю, что этот вопрос, возможно, был решен здесь и здесь однако я вижу, что если я позвоню:
Type genericReturnType = method.getGenericReturnType();
System.out.println("Generic return type (name): " + genericReturnType.getTypeName());
Это печатает:
java.util.ArrayList<java.lang.String>
Что говорит о том, что можно знать, что ArrayList<>
содержит Object
типа String
.
Очевидно, я мог бы извлеките String
из текста: <java.lang.String>
с помощью регулярных выражений, но это не идеально.
Чего мне не хватает? Можно ли получить тип ArrayList<>
метода, который возвращает ArrayList<TYPE>
во время выполнения с помощью отражения? Если нет, то как genericReturnType.getTypeName()
печатает правильный тип (String)?