ParameterizedType parameterized =
(ParameterizedType) List.class.getMethod("iterator").getGenericReturnType();
Type raw = parameterized.getRawType();
ParameterizedType#getRawType() возвращает a Type, а не a Class<?> (хотя я понимаю, что java.lang.Class теперь реализует Type). Есть ли веская причина, почему getRawType() не объявляет свой тип возврата Class<?>? Существуют ли экстремальные случаи, когда результат getRawType() не может быть Class<?>?
Это достаточно, чтобы работать с j.l.r.Type как есть; это похоже на экземпляр, в котором они могли бы сэкономить нам одно понижение.