Java:返回超类方法签名中的子类
2022-09-01 10:53:25
我正在研究一个问题,其中有几个实现,伴随着几个。虽然 共享几个需要设置的公共变量,但它们也有不同的变量,需要它们各自的变量来实现一些特定的功能。为了简洁起见,我希望让 的 setter 使用方法链,例如:Foo
FooBuilder
Foo
FooBuilder
FooBuilder
public abstract class FooBuilder {
...
public FooBuilder setA(int A) {
this.A = A;
return this;
}
...
}
和
public class FooImplBuilder extends FooBuilder{
...
public FooImplBuilder setB(int B) {
this.B = B;
return this;
}
public FooImplBuilder setC(int C) {
this.C = C;
return this;
}
...
}
依此类推,有几种不同的实现。这在技术上可以完成我想要的一切,但是,此方法在执行方法链接时对方法调用的顺序很敏感。下面有方法未定义的编译错误:FooBuilder
someFoo.setA(a).setB(b)...
要求开发人员考虑链中方法调用的顺序。为了避免这种情况,我希望让 setter 以某种方式返回实际的实现子类。但是,我不确定如何做到这一点。最好的方法是什么?FooBuilder