Отвечая на несколько вопросов здесь ранее и из некоторой работы, которую я выполнял в последнее время, мне было интересно, почему Java не поддерживает цепочку методов для своих встроенных классов.
Например, если бы мне нужно было создать класс Car
, я мог бы сделать его связным, повторно задав this
вместо void следующим образом:
public class Car {
private String make;
public Car setMake(String make) {
this.make = make;
return this;
}
}
Есть ли какая-то особая причина, по которой встроенные библиотеки не работают таким образом? Есть ли недостаток в цепочке методов?
Возможно, я упустил что-то, что могло бы объяснить отсутствие цепочки методов, однако любой метод установки, возвращающий void по умолчанию, должен возвращать ссылку на this (по крайней мере, на мой взгляд, так и должно быть). Это сделало бы ситуации, подобные следующей, намного чище.
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);
Мне было бы очень интересно услышать причины этого решения. Если бы мне пришлось догадываться, это было бы связано с накладными расходами, и поэтому их следует использовать только при необходимости.