Ist es eine gute oder schlechte Idee, Setter in Java dazu zu bringen, "dies" zurückzugeben?
public Employee setName(String name){
this.name = name;
return this;
}
Dieses Muster kann nützlich sein, da Sie dann Setter wie folgt verketten können:
list.add(new Employee().setName("Jack Sparrow").setId(1).setFoo("bacon!"));
an Stelle von:
Employee e = new Employee();
e.setName("Jack Sparrow");
...and so on...
list.add(e);
... aber es widerspricht irgendwie der Standardkonvention. Ich nehme an, es könnte sich lohnen, nur weil es diesen Setter dazu bringen kann, etwas anderes Nützliches zu tun. Ich habe gesehen, dass dieses Muster an einigen Stellen verwendet wurde (z. B. JMock, JPA), aber es scheint ungewöhnlich und wird nur allgemein für sehr gut definierte APIs verwendet, bei denen dieses Muster überall verwendet wird.
Aktualisieren:
Was ich beschrieben habe, ist offensichtlich gültig, aber was ich wirklich suche, sind einige Gedanken darüber, ob dies allgemein akzeptabel ist und ob es Fallstricke oder verwandte Best Practices gibt. Ich kenne das Builder-Muster, aber es ist etwas komplizierter als das, was ich beschreibe - wie Josh Bloch es beschreibt, gibt es eine zugehörige statische Builder-Klasse für die Objekterstellung.
this
. Manchmal ändere ich die Funktion sogar so, dass sie, anstatt einen Wert zurückzugeben, auf ein Mitglied des Objekts angewendet wird, nur damit ich dies tun kann. Es ist wundervoll. :)