Из Effective Java Second Edition, Item 28 :«Не используйте типы с подстановочными знаками в качестве возвращаемых типов. Вместо предоставления дополнительной гибкости для ваших пользователей это заставит их использовать типы с подстановочными знаками в клиентском коде».
public final Class<? super T> getRawType()
Я только что разобрался с общими подстановочными знаками, чтобы понять последнее предупреждение о непроверенном приведении, которое у меня есть в фрагменте кода, который я пишу, и я не понимаю, почему getRawType ()возвращает подстановочный тип.
class Base<T>{}
class Child<T> extends Base<T>{}
public <C> void test (TypeToken<? extends Base<C>> token) {
Class<? extends Base<C>> rawType = (Class<? extends Base<C>>) token.getRawType();
}
Мне нужно использовать token.getRawType (), так как он возвращает
Class<? super ? extends Base<C>>