While answering a few questions on here earlier and from some work I have been doing lately I have been wondering why Java does not support method chaining on its built in classes.
If I were to create a Car
class for example, I could make it chainable by reutrning this
instead of void as follows:
public class Car {
private String make;
public Car setMake(String make) {
this.make = make;
return this;
}
}
Is there any particular reason why the built in libraries don't tend to do things this way? Is there a downside to method chaining?
I may have overlooked something which would explain the lack of method chaining however any setter method that returns void by default should return a reference to this (at least in my eyes it should). This would make situations like the following much cleaner.
container.add((new JLabel("label text")).setMaximumSize(new Dimension(100,200)));
rather than the more long winded: Note: It would not stop you from coding this way if you wished.
JLabel label = new JLabel("label text");
label.setMaximumSize(new Dimension(100,200));
container.add(label);
I would be very interested to hear the reasons behind this decision, If I had to guess it would be that there is an overhead associated with this and so should only be used when needed.