Javaには、次のクラス構造があります。
クラスすべて
+-- クラス A はすべてを拡張
+-- クラス B はすべてを拡張
クラス ContainAll
+-- クラス ContainA は ContainAll を拡張
+-- クラス ContainB は ContainAll を拡張
すべての「含む」クラスには、リンクされたリストとメソッドがあります
public addElement(All a) {
list.add(a)
}
クラス ContainAll はインスタンス化するべきではありませんが、クラス ContainA および ContainB はインスタンス化できます。
ジェネリックを使用して、クラス ContainB の addElement がタイプ B からのみオブジェクトを取得できることを明確にする方法は次のとおりです。
public abstract class ContainAll<T extends All> {}
public class ContainB<T extends B> extends ContainAll<All> {
public addElement(T b) {
list.add(b);
}
}
しかし、この例は機能しません。試してみました。読んでくれてありがとう。