2

両方ともインターフェースZを実装する2つのクラスAとBがあります。今、クラスAは、インターフェースZのいくつかの機能(Z.f1、Z.f2、Z.f3、...)のオブジェクトへのディスパッチャーとしてのみ機能する必要がありますクラスB。

public class A implements Z{

private B b;  //instantiated in constructor of A

@Override
public String f1(int p)
{
  return b.f1(p);
}
...

Javaでこれを行う一般的な方法はありますか?

4

2 に答える 2

0

f1()メソッドがインターフェースで宣言されていることを意味する場合Z、実装するパターンはラッパーまたはデコレーターと呼ばれます。

Javaでは、Java1.4で導入された動的プロキシを使用して汎用実装を作成できます。

于 2012-10-29T17:31:33.780 に答える
0

私はそうは思わない。ただし、呼び出しを委任するためのすべての単純なメソッドを作成するのに IDE が役立つ場合があります。また、これを行うためのサード パーティ クラスを見つけることもあります。たとえば、Guava (http://code.google.com/p/guava-libraries/) には多数の ForwardingXXX クラスがあり、デフォルトではすべてを別のものに委譲します。たとえば、ForwardingMap はすべての呼び出しを別の Map に委任します。委任したくないメソッドをオーバーライドする必要があります。

于 2012-10-29T17:32:24.953 に答える