Methodenverkettung

Status
Nicht offen für weitere Antworten.
L

Lothar

Gast
Hallo,

mir ist es einige male aufgefallen, dass einige Programmierer in ihren Quelltexten mehrere Methoden aneinander ketten.
Bsp: blabla = instanzierteklasse.methodeA().methodeB().methodeC()
Im Internet habe ich zumindestens mal herausgefunden, dass man diese Praxis method chaining nennt, doch wie das genau funktioniert konnte ich nirgendwo nachvollziehen.

bye
Lothar
 

norman

Top Contributor
naja, in deinem beispiel gehört die methodeC zu dem objekt, was methodeB liefert. methodeB ist von dem Typ, dass methodeA liefert, die wiederum vom typ der instanziertenKlasse ist.

das ganze funktioniert also zB nicht, wenn methodeA oder B void sind.

Bsp:
Code:
StringBuilder sb = new StringBuilder("dasj");
		sb.append("sdf").append("adf");
die methode append liefert wieder ein StringBuilder objekt zurück, dadurch kann verkettet werden..
 

Murray

Top Contributor
Das ist eigentlich nur eine Abkürzung für:
Code:
IrgendEinTyp o1 = instanzierteklasse.methodeA();
AuchEinTyp o2 = o1.methodeB();
blabla = o2.methodeC();
Mit dem method-chaining sparst Du Dir die Deklaration der temporären Variablen und - sofern es sich umTypen aus einem anderen Package handelt - auch das Importieren der Klasse.
 

A.T.

Bekanntes Mitglied
Weiß nicht ob dir das jetzt weiter hilft und ob ich dein Problem überhaupt richtig verstanden habe, aber angenommen du hast eine Maske auf der etwas in ein Textfeld eingetragen wird. In deinem Controller für die Maske möchtest du diese Eingabe jetzt einer Variablen zuweisen, z.B. ließt du nur int ein. Wenn es jetzt aber für dieses Textfeld nur einen Getter fürs gesamte Textfeld und nicht für den Inhalt gibt würdest du so was in der Art schreiben.

int variable = Integer.parseInt(getTextFeld().getText());

Damit hättest du zwei Funktionsaufrufe verknüft. Eigentlich ist das das gleich als wenn du, um beim Beispiel zu blieben. Erst dein Textfeld holst. Dieses Textfeld einem "neuen" Textfeld zuweist und aus diesem dann den Text rausholst.

Gibts noch viele weiter Beispiel zu.

P.S. Da war wohl einer schneller als ich und hat es auch noch besser erklärt!
 

meez

Top Contributor
Bei Sachen wie getTextFeld().getText().substring(5) o.ä. kann man die Methoden verketten...
Bei komplexeren Sachen würd ichs auf Grund der Code-Uebersichtlichkeit nicht machen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben