Guava ForwardingList Verwendungsbeispiel

7

Ich suche nach einem Beispielcode, der die Guava ForwardingList-Klasse erklärt. Im Grunde implementiere ich eine benutzerdefinierte ArrayList-Klasse, die verwendet wird, um diese in meine frühere SO-Frage . Ich habe die Google-Sammlung zuvor noch nie verwendet. Aber wenn ich mir die JavaDoc-ForwardingList anschaue, kann ich meine benutzerdefinierte Klasse implementieren durch Unterklassierung von ForwardingList.

    
Sujee 17.08.2010, 11:51
quelle

2 Antworten

17

ForwardingList (welche extends ForwardingCollection , was wiederum extends ForwardingObject ) implementiert die Dekorationsmuster .

Um zu verwenden, müssen Sie nur zwei Dinge tun:

  • @Override delegate() , um die unterstützende Delegat-Instanz zurückzugeben, von der Methoden an
  • weitergeleitet werden
  • @Override whatever List Methode, die Sie dekorieren möchten

Das Decorator-Muster ermöglicht Ihnen die Verwendung von Komposition anstelle von Vererbung ( Effektive Java 2. Edition, Favor-Komposition über Vererbung ) und ForwardingList von Guava bietet eine praktische Vorlage, aus der Sie Ihre eigene% schreiben können. co_de% implementation, die den gesamten Installationsmechanismus für Sie bereitstellt.

Beachten Sie, dass Sie, wenn Sie ein List dekorieren möchten, wahrscheinlich möchten, dass Ihre Unterklasse ArrayList auch ForwardingList .

Beispiel: RandomAccess

Hier ist ein (unvollständiges!) Beispiel für ListWithDefault , das ForwardingList -Werte im Delegaten durch einen vorgegebenen Standardwert ersetzt.

%Vor%

Wir können es dann wie folgt testen:

%Vor%

Beachten Sie, dass dies eine unvollständige Implementierung ist. Die null -Methode gibt immer noch den toString() des Delegierten zurück, der den Standardwert nicht kennt. Einige andere Methoden müssen auch für eine vollständigere Implementierung toString() sein.

    
polygenelubricants 17.08.2010, 11:58
quelle

Tags und Links