根据《Effective Java 第二版》,第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>>