私はJavaを初めて使用し、Java Generics and Collectionsの本から以下の奇妙な構文を理解しようとしています。(私はC ++テンプレートを幅広く使用したため、ジェネリックプログラミングの基本と考えられる落とし穴を理解していると主張できます)。
interface Collection <E> {
...
public boolean addAll(Collection<? extends E> c);
...
}
上記を次のように記述できないのはなぜですか。
interface Collection <E> {
...
public boolean addAll(Collection<T extends E> c);
...
}
違いはなんですか?それは単なる言語制限ですか、それとも内部で何か違いがありますか?