2

我有两个类 A 和 B 都实现接口 Z 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 中,您可以使用 java 1.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 回答