Class<? extends Integer>
正常にコンパイルされますInteger
が、最終的な型であるため、上限として使用することは意味がありません (何もありませんextend
)。
型パラメーターの上限として final 型を使用しようとすると、コンパイラの警告が表示されます。
型パラメーター T は、最終的な型 Integer によって制限されるべきではありません。最終的な型をさらに拡張することはできません
ワイルドカードの上限として final 型を使用してもまったく問題ないのに、型パラメーターに対して警告がスローされるのはなぜでしょうか? なぜ Java は、ワイルドカードが最終的な上位型によって境界付けられることを許可するのですか?