title: In Java, is there a better alternative to getter and setter methods?
body: <p>It is common in Java classes to have lots of getter and setter methods, one each for every data model class variable.  I realize that many IDEs will create these for you, but I'm trying to avoid this clutter and not have all these methods in my classes.  So, is there any way to access a variable in a read only fashion outside the class (as if it were public final), while retaining write access inside the class or subclass exclusively (as if it were private or protected).</p>
  
  <p>The only pseudo-solution I've come up with is a base class (or interface with default methods) that has a get(String variableName) method which then gets the fields of the class via reflection and returns the appropriate one.  The downside is that for that to work, the variables have to be public, so only by convention does it meet my requirements (in that in the extending/implementing class that has the variables I want to access, I only call the get method from outside the class, and don't implement a set method).  The main thing I don't like about this is that if a variable name changes, callers of the get methods will not cause compiler errors, since the variable name is just a hardcoded String.</p>
  
  <p>Anyone have a better idea?</p>