我有两个类A和B,它们都是接口Z.现在,接口Z的某些函数(Z.f1,Z.f2,Z.f3,...)的A类应该只作为调度程序使用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中有没有通用的方法呢?
答案 0 :(得分:0)
如果您的意思是在接口f1()
中声明了方法Z
,那么您要实现的模式称为包装器或装饰器。
在java中,您可以使用引入java 1.4的动态代理创建泛型实现。
答案 1 :(得分:0)
我不这么认为。但有时您的IDE可以帮助创建委派调用的所有简单方法。有时您可以找到第三部分类来完成此任务。例如,Guava(http://code.google.com/p/guava-libraries/)有大量的ForwardingXXX类,默认情况下,它们将所有内容委托给其他人。例如,ForwardingMap将所有调用委托给另一个Map。您需要覆盖您不想委派的方法。