IUncleはUncleが実装するインタフェースであると仮定します。 クラスChild内で具体的なクラスを使用しないことを約束します。子供がIuncleの実装で使用されるようにするためです。 どのようにして、Child(以下)の実装を、Uncleの実装に適した方法で変更できますか。タイプが一般的なJavaコレクションである属性に要素を追加する
メインクラスでpublic class Child {
private List<IUncle> uncles;
public Child(List<IUncle> uncles){
this.uncles = uncles;
}
public void addUncle(IUncle uncle) {
this.uncles.add(uncle);
}
}
は、私はこのように、このクラスを使用します。
List<Uncle> uncles = new ArrayList<Uncle>();
Child oneChild = new Child(uncles);
oneChild.addUncle(new Uncle);
これがすべてでは動作しませんです!
Javaでこの状況に対処する適切な方法を教えてください。
'リスト'と 'リスト'は互換性がありません。彼らは同じものを保存しません。 –
Andreas
「アンクル」とは何ですか?「アイヌクル」とは何ですか? – user1803551
IUncleは実際にはインターフェイスであり、Uncleはそのインターフェイスを実装するクラスです。そして、はい、私はリストとリストは互換性がないことを知っています。問題は、実装の内部で具体的なクラスを使用しないことによって、SOLIDの原則を尊重する方法でこのクラスを扱う方法です。 –
mokolop