Guice mit den Eltern

8

Was mache ich mit Guice, wenn ich einen Elternkonstruktor aufrufen muss, der auch injizierbar ist? z.B. Ich habe eine abstrakte Elternklasse, die einen Konstruktor hat, der mit einem Objekt injiziert wird, das von allen abgeleiteten Kindern geteilt wird, und jedes Kind hat auch einen injizierbaren Konstruktor.

Der Aufruf von super () funktioniert nicht, weil Java möchte, dass ich das Objekt als einen Parameter übergebe, anstatt Guice injizieren zu lassen.

Danke

BEARBEITEN: Ich frage mich, ob ich vielleicht stattdessen Methode Injektion verwenden sollte?

    
christophmccann 30.11.2010, 00:22
quelle

3 Antworten

9

Sie müssten genau dasselbe tun, wenn Sie Guice nicht verwenden ... deklarieren Sie alle Parameter, die der Elternkonstruktor als Parameter für den Konstruktor jedes Kindes benötigt, und übergeben Sie diese an super .

Wenn also der Konstruktor Ihrer abstrakten Elternklasse ein Foo hat, muss der Konstruktor einer Kindklasse wie folgt aussehen:

%Vor%     
ColinD 30.11.2010, 01:14
quelle
4

Im Abschnitt Minimize Mutability der Guice Best Practices finden Sie folgende Richtlinie:

  

Unterklassen müssen super() mit allen Abhängigkeiten aufrufen. Das macht   Konstruktorinjektion umständlich, insbesondere als die injizierte Basis   Klassenänderungen.

In der Praxis sehen Sie, wie Sie das mit der Konstruktorinjektion tun:

%Vor%     
Jeff Axelrod 28.03.2012 13:54
quelle
1

Eine bessere Alternative ist es, etwas Ähnliches wie das Strategie-Muster zu verwenden, um alle Felder einzukapseln, die die Oberklasse injizieren möchte, und dann kann die Unterklasse diese injizieren. Zum Beispiel:

%Vor%     
Daniel Pryden 13.09.2016 20:54
quelle

Tags und Links