Java: powracająca podklasa w sygnaturze metody nadklasy
Pracuję nad problemem, w którym istnieje kilka implementacjiFoo
, towarzyszy kilkuFooBuilder
jest. PodczasFoo
ma kilka wspólnych zmiennych, które należy ustawić, mają też różne zmienne, które wymagają ich odpowiednichFooBuilder
wdrożyć pewne konkretne funkcje. Dla zwięzłości chciałbym miećFooBuilder
ustawiaczy używających łańcuchów metod, takich jak:
public abstract class FooBuilder {
...
public FooBuilder setA(int A) {
this.A = A;
return this;
}
...
}
i
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;
}
...
}
I tak dalej, z kilkoma różnymiFooBuilder
wdrożenia. To technicznie robi wszystko, czego chcę, jednak to podejście jest wrażliwe na kolejność wywołań metod, gdy wykonywane jest łączenie metod. Poniżej przedstawiono niezdefiniowane błędy kompilacji metody:
someFoo.setA(a).setB(b)...
Wymaganie, aby deweloper zastanowił się nad kolejnością wywołań metod w łańcuchu. Aby tego uniknąć, chciałbym mieć seterówFooBuilder
jakoś zwrócić rzeczywistą podklasę implementacyjną. Nie wiem jednak, jak to zrobić. Jakie jest najlepsze podejście?