Search code examples
javagetter-setter

(no) Properties in Java?


So, I have willfully kept myself a Java n00b until recently, and my first real exposure brought about a minor shock: Java does not have C# style properties!

Ok, I can live with that. However, I can also swear that I have seen property getter/setter code in Java in one codebase, but I cannot remember where. How was that achieved? Is there a language extension for that? Is it related to NetBeans or something?


Solution

  • There is a "standard" pattern for getters and setters in Java, called Bean properties. Basically any method starting with get, taking no arguments and returning a value, is a property getter for a property named as the rest of the method name (with a lowercased start letter). Likewise set creates a setter of a void method with a single argument.

    For example:

    // Getter for "awesomeString"
    public String getAwesomeString() {
      return awesomeString;
    }
    
    // Setter for "awesomeString"
    public void setAwesomeString( String awesomeString ) {
      this.awesomeString = awesomeString;
    }
    

    Most Java IDEs will generate these methods for you if you ask them (in Eclipse it's as simple as moving the cursor to a field and hitting Ctrl-1, then selecting the option from the list).

    For what it's worth, for readability you can actually use is and has in place of get for boolean-type properties too, as in:

    public boolean isAwesome();
    
    public boolean hasAwesomeStuff();