Skip to content

Comment on Java.evolved: Java has evolved. Your code can tooparent

Comments

And the second you have anything other than a toy application you'll find out why getters, setters, and validation were invented, and why we them just moved everything to have consistent interfaces.

This is the meme where the Padawan exposes public fields, the intermediate says you must use setters and getters, and the Jedi just exposes public fields.

(Records kind of made this moot, and for the better)

Except records are immutable and have getters and setters as builtins to replicate what we've been doing with Lombok.

So enforces what I was saying.

To be clear, Records don't have setters. They are immutable.

Yeah, sorry, typo.

Still they institutionalise getters, which is the opposite of what their argument was.

Well, they don't have "getters" either, they have accessors; x() instead of getX(). It's still bad, but at least it doesn't enforce JavaBeans conventions, which is where getters and setters actually originate [0].

0: https://en.wikipedia.org/wiki/JavaBeans

immutable
setters

sigh

I think getters and setters had more value when IDEs and refactoring tools were worse (or non-existent).

A free-for-all accessing some public field is now less of a risk because it’s trivial to find all references and change them.

Have worked on many a non-toy java application. Have never used things like Lombok hiding getters/setters behind the covers. Never found this to be a real world problem.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.