Java: powracająca podklasa w sygnaturze metody nadklasy

Pracuję nad problemem, w którym istnieje kilka implementacjiFoo, towarzyszy kilkuFooBuilderjest. PodczasFooma 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ćFooBuilderustawiaczy 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?

questionAnswers(3)

yourAnswerToTheQuestion