以下の例のように、多くのメソッドを持ついくつかのインターフェースを実装する基本クラスを作成する必要があります。
重複したメソッドの大群を作成することなく、これらのメソッド呼び出しを委任する簡単な方法はありますか?
public class MultipleInterfaces implements InterFaceOne, InterFaceTwo {
private InterFaceOne if1;
private InterFaceTwo if2;
public MultipleInterfaces() {
if1 = new ImplementingClassOne();
if2 = new ImplementingClassTwo();
}
@Override
public void classOneMethodOne { if1.methodOne(); }
@Override
public void classOneMethodTwo { if1.methodTwo(); }
/** Etc. */
@Override
public void classTwoMethodOne { if2.methodOne(); }
@Override
public void classTwoMethodTwo { if2.methodTwo(); }
/** Etc. */
}
前述のように、方法はありません。ただし、少しまともなIDEはデリゲートメソッドを自動生成できます。たとえば、Eclipseでできます。最初にテンプレートをセットアップします。
public class MultipleInterfaces implements InterFaceOne, InterFaceTwo {
private InterFaceOne if1;
private InterFaceTwo if2;
}
次に、右クリックしてソース>デリゲートメソッドの生成を選択し、if1
フィールドとif2
フィールドの両方にチェックマークを付けて、OKをクリックします。
次の画面も参照してください。
複数のインターフェイスを実装する方法が1つあります。
あるインターフェイスを別のインターフェイスから拡張するか、定義済みのインターフェイスを拡張するインターフェイスを作成します。例:
public interface PlnRow_CallBack extends OnDateSetListener {
public void Plan_Removed();
public BaseDB getDB();
}
現在、outクラスで使用する別のインターフェイスを拡張するインターフェイスがあり、2つ以上のインターフェイスを実装するこの新しいインターフェイスを使用するだけです。
public class Calculator extends FragmentActivity implements PlnRow_CallBack {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
}
@Override
public void Plan_Removed() {
}
@Override
public BaseDB getDB() {
}
}
お役に立てれば
残念だけど違う。
私たちは皆、 拡張メソッド のJavaサポートを待ち望んでいます
きれいな方法はありません。ターゲットメソッドを持ち、他のすべてをそれらに委任するハンドラーでプロキシを使用できる場合があります。もちろん、コンストラクタがないため、ファクトリを使用する必要があります。