Beispiel java.util.Formatter:
Für die formatierte Erzeugung von Zeichenfolgen haben wir früher bereits
die Instanzmethoden printf(String, Object...) der Klasse
java.io.PrintStream (Typ der Klassenvariablen System.out)
und format(String, Object...) der Klasse String kennengelernt.
Beide Methoden sind mit Hilfe der Klasse java.util.Formatter und
deren Instanzmethode format(String, Object...) implementiert.
Formatter ist ein schönes Beispiel für sogenannte Lego-Software,
denn Formatter ist dank der Verwendung von Object- und
Interface-Referenzen sehr flexible mit Objekten verschiedener Klassen kombinierbar:
Object
beliebige Objekte verwendet werden.Formatter-Konstruktor jedes Objekt
übergeben werden, das über das Interface java.util.Appendable
benutzbar ist.
Das als Ziel verwendete Interface Appendable hat wiederum flexibel
verwendbare Methoden dank Parametertyp CharSequence.
Zwei Implementierungsklassen von Appendable kennen wir schon:
es sind StringBuilder und java.io.PrintStream,
der Typ von System.out.
Im oben erwähnten String.format wird ein Formatter-Objekt
mit StringBuilder-Objekt als Ziel erzeugt,
in PrintStream.printf eines mit dem PrintStream-Objekt als Ziel.
Schauen Sie sich die genannten Methoden, Klassen und Interfaces in der API-Dokumentation an: