Play!Framework 2 for Java is awesome in this matter. You write public members, but at compilation it transforms them into private members with getters and setters (if not final). It means if you write the setter, it overrides the default one.
Lombok does the same ;)
But then you're using Lombok...
Can you clarify? I've heard similar negative feelings from devs. What's wrong with lombok?