私は次のようなスーパークラスを持っています
class SuperClass {
private String name;
private List<SuperClass> subList;
//getter setters
}
そして、この SuperClass を拡張して、次のようなフィールドをいくつか追加したいと考えています。
class SubClass extends SuperClass {
private String email;
//getter setter
}
さて、私の質問は、SuperClassが SuperClass 型のオブジェクトのリストへの参照を保持しているため、 SubClassオブジェクトが SubClass 型のオブジェクトのリストへの参照を保持するようにするにはどうすればよいですか? 私はここで何かひどく間違ったことをしていますか?
編集 次のようなことができますか
class SuperClass {
private String name;
private List<? extends SuperClass> subList;
public SuperClass(List<? extends SuperClass> subList) {
this.subList = subList;
}
}
そして今、サブクラスはスーパークラスのコンストラクターを呼び出すだけです
class SubClass extends SuperClass{
private String email;
private SubClass(List<? extends SuperClass> subList) {
super(subList);
}
}
しかし、リストに何かを追加したい場合、ジェネリックの PECS (プロデューサー拡張、消費者スーパー) の原則ではそれができないため、リストに追加することはできません..だからいつでも、私はする必要がありますオブジェクトを subList に追加 新しいリストを作成し、そのリストを SubClass に設定する必要があります