Почему TypeToken.getRawType в Guava ()возвращает Class вместо Class

Из 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>>
10
задан MikeB 29 June 2012 в 12:22
поделиться