Java: Rückgabe der Unterklasse in der Signatur der Oberklassenmethode

Ich arbeite an einem Problem, bei dem es mehrere Implementierungen von gibtFoo, begleitet von mehrerenFooBuilder's. WährendFooSie haben mehrere gemeinsame Variablen, die festgelegt werden müssen, und unterschiedliche Variablen, für die ihre jeweiligen Variablen erforderlich sindFooBuilder um eine bestimmte Funktionalität zu implementieren. Aus Gründen der Übersichtlichkeit hätte ich gerne dieFooBuilderSetter zur Verwendung der Methodenverkettung, wie:

public abstract class FooBuilder {
  ...

  public FooBuilder setA(int A) {
    this.A = A;
    return this;
  }

  ...
}

und

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;
  }
  ...
}

Und so weiter, mit mehreren verschiedenenFooBuilder Implementierungen. Dies macht technisch alles, was ich will. Dieser Ansatz ist jedoch abhängig von der Reihenfolge der Methodenaufrufe, wenn eine Methodenverkettung durchgeführt wird. Folgendes weist undefinierte Kompilierungsfehler auf:

someFoo.setA(a).setB(b)...

Voraussetzung ist, dass der Entwickler über die Reihenfolge der Methodenaufrufe in der Kette nachdenkt. Um dies zu vermeiden, möchte ich die Setter habenFooBuilder Gibt irgendwie die eigentliche implementierende Unterklasse zurück. Ich bin mir jedoch nicht sicher, wie ich das machen soll. Was ist der beste Ansatz?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage