我有两个类 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 中有没有通用的方法来做到这一点?
我有两个类 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 中有没有通用的方法来做到这一点?
如果您的意思f1()
是在接口中声明该方法,Z
那么您要实现的模式称为包装器或装饰器。
在 java 中,您可以使用 java 1.4 中引入的动态代理来创建通用实现。
我不这么认为。但有时您的 IDE 可以帮助创建所有简单的方法来委派调用。有时您可以找到第三方类来执行此操作。例如,Guava (http://code.google.com/p/guava-libraries/) 有大量的 ForwardingXXX 类,默认情况下,它们会将所有内容委托给其他东西。例如,ForwardingMap 将所有调用委托给另一个 Map。您需要覆盖您不想委托的方法。