次のJavaコードについて考えてみます。
List<? super Number> list = new ArrayList<>();
Number n = new Integer(1);
Object o = new Object();
list.add(n); // works, apparently Number super Number is alright
list.add(o); // compiler error!
しかし、なぜそうなのですか?内部的には、型消去はオブジェクトを保持するリストを作成するので、オブジェクト(すべてのクラスのスーパークラスであり、したがって下限ワイルドカードを満たす必要がある)をリストに追加できないのはなぜですか?