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>>