たとえば、HashSetクラスを拡張したいのですが、クラスを拡張する代わりに、新しいクラスに、既存のクラスのインスタンスを参照するプライベートフィールドを与えます。新しいクラスの各インスタンスメソッドは、既存のクラスに含まれているインスタンスの対応するメソッドを呼び出し、結果を返します。これは、構成と転送のアプローチです。
すなわち、例えば、私はIDE
にForwardingSet
基づいてクラスを生成したいですSet
:
public class ForwardingSet<E> implements Set<E> {
private final Set<E> s;
public ForwardingSet(Set<E> s){
this.s = s;
}
public boolean contains(Object o){
return s.contains(o);
}
public boolean isEmpty(){
return s.isEmpty();
}
... and etc.
}
だから、どうやってそれを生成できIdea
ますか?
これは、「委任されたメソッドの生成」機能を使用して実行できます。
委任するフィールドのみを含む基本クラスを作成します。
public class ForwardingSet<E> implements Set<E> {
private final Set<E> s;
}
ローカルs
変数の後ろを右クリックし、「生成」を押します
ポップアップで「デリゲートメソッド」を選択してから、ローカルs
変数を選択します。
オーバーライドするすべてを選択します
(オプション)を使用するコピーして交換するために交換するpublic
ことで@Override public
、その後、すべて手動で上書き警告を取り除くために、ファイル内の最初の公開のためにそれを削除します
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加