Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

boolean (Boolean) - getter is vs get

Tags:

java

wsimport

It looks like everyone says that right getter for:

  • primitive boolean -> getter is
  • object Boolean -> getter get

Example:

public class Test {

    private boolean primitive;
    private Boolean object;

    public boolean isPrimitive() {
         return primitive;
    }
    public Boolean getObject() {
        return object;
    }
    //..
}

Question:

Is there any spec or document that states this is correct and this is the way to specify getters for boolean values? Or this is only a common assumption?

I'm asking becouse for example wsimport generates getter is for Boolean object. Is this a tool bug, or this is allowed and correct?

In the other hand some framweorks don't work properly with such getters. For example JSF (EL) or Dozer.

like image 762
Hubert Avatar asked Feb 18 '14 10:02

Hubert


People also ask

How do you name a Boolean getter?

It is highly recommended to use an adjective to name a boolean field. If you generate getter and setter using IntelliJ, you will find out that the getter is isCurrent() for both of boolean fields current and isCurrent .

Is Boolean AND Boolean same in Java?

boolean is a primitive and Boolean is as object wrapper. So boolean, is the type whose values are either true or false while the other is an object.

What is Boolean true in Java?

The boolean returned represents the value true if the string argument is not null and is equal, ignoring case, to the string "true" . Example: Boolean. parseBoolean("True") returns true .

Can you override Lombok getter?

You can always manually disable getter/setter generation for any field by using the special AccessLevel. NONE access level. This lets you override the behaviour of a @Getter , @Setter or @Data annotation on a class.


2 Answers

The getter method for the field boolean myField is getMyfield() or isMyField() (it's up to the user to choose). I personally use the second format, as many source code generating tools do.

This format is a standard, it is defined in the JavaBeans specification. See the section 8.3.2 of this documentation: http://download.oracle.com/otndocs/jcp/7224-javabeans-1.01-fr-spec-oth-JSpec/

Quote from the docs:

In addition, for boolean properties, we allow a getter method to match the pattern:

  public boolean is<PropertyName>();

The documentation doesn't talk about the primitive wrappers like the Boolean class.

like image 166
Vincent Cantin Avatar answered Sep 25 '22 18:09

Vincent Cantin


// "is" used because the value can be either true or false. It's like asking isTrue?
public boolean isPrimitive() {
     return primitive;
}

// "get" is used because the value returned can be either true, false or null.  
// So, the third state 'null' makes you wonder if 'is' should be used or 'get'.
// "get" is more appropriate as Boolean can also have null.
public Boolean getObject() {
    return object;
}

But frankly, it's left to the developer. There's nothing "wrong" in using getBoolean() on a boolean value (is makes more sense, that's it).

like image 26
TheLostMind Avatar answered Sep 25 '22 18:09

TheLostMind