4 ms·
I use Java since first beta. These getters and setters are always looking awkward for me, unless they are part of a library API, so they are useful for providin
by drran 6y ago
I use Java since first beta. These getters and setters are always looking awkward for me, unless they are part of a library API, so they are useful for providing backward compatibility, or they are lazy objects, or they are defined in an interface. In my own code, I avoid using them in POJO.
For example, I prefer
public class LineOptions {
public Color color = Color.BLACK;
public int thickness = 1;
...
}
void drawLine(int sx, int sy, int tx, int ty, LineOptions options) { ... }
ctx.drawLine(0,0, 100, 100, new LineOptions() {{ color=Color.RED; thickness=3; }});
IMHO, it is much simpler and easier than classic POJO + Builder patterns.
public class LineOptions {
private Color color = Color.BLACK;
private int thickness = 1;
...
public LineOptions() { }
public LineOptions(Color color, int thickness, ...) {
this.color = color;
this.thickness = thickness;
...
}
public Color getColor() { return this.color; }
public LineOptions setColor(Color color) { this.color = color; return this; }
public Color getThickness() { return this.thickness; }
public LineOptions setThickness(int thickness) { this.thickness = thickness; return this; }
...
}
ctx.drawLine(0,0, 100, 100, new LineOptions().setColor(Color.RED).setThickness(3));
or even more classic
LineOptions opts = new LineOptions();
opts.setColor(Color.RED);
opts.setThickness(3);
ctx.drawLine(0,0, 100, 100, opts);
- WClayFerguson 6y agoThe Java languages gives you the choice of whether to use getters/setters or not. You added a good example. The main reason I love getters/setters is they are a 'hook' to add any code (like logging) if you want to detect when a variable is being read/written.