来自 Effective Java Second Edition,第 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>>