ここで以前にいくつかの質問に答えている間、そして私が最近行っているいくつかの作業から、なぜJavaが組み込みクラスのメソッドチェーンをサポートしていないのか疑問に思っています。
Car
たとえば、クラスを作成する場合、次のようにvoidの代わりにreutrningすることで、クラスをチェーン可能にすることができます。this
public class Car {
private String make;
public Car setMake(String make) {
this.make = make;
return this;
}
}
組み込みライブラリがこのように動作しない傾向がある特別な理由はありますか?メソッドチェーンの欠点はありますか?
メソッドチェーンの欠如を説明する何かを見落としているかもしれませんが、デフォルトでvoidを返すセッターメソッドはこれへの参照を返す必要があります(少なくとも私の目にはそうあるべきです)。これにより、次のような状況がはるかにクリーンになります。
container.add((new JLabel("label text")).setMaximumSize(new Dimension(100,200)));
注:必要に応じて、この方法でコーディングすることを妨げることはありません。
JLabel label = new JLabel("label text");
label.setMaximumSize(new Dimension(100,200));
container.add(label);
この決定の背後にある理由を聞いて非常に興味があります。これに関連するオーバーヘッドがあると推測する必要がある場合は、必要な場合にのみ使用する必要があります。