Java boolean, Boolean Getter/Setter 차이 feat. IntelliJ

자바에선 원시 타입(primitive type)인 boolean과 클래스 타입 Boolean의 Getter를 생성할 때 규칙이 다릅니다.

자바의 프로퍼티 접근자(Getter/Setter)는 JavaBeans 스펙에 그 내용이 기술되어 있는데 그 내용은 접근자를 만들 때 PropertyName앞에 get과 set을 붙인다는 내용입니다.


다만 boolean 타입에 대해선 별도로 명시하고 있는데 그 내용은 다음과 같습니다.




간단히 설명하면 원시 타입 boolean의 경우 다음과 같이 is를 붙이는 형태로 작성할 수 있습니다.


public boolean is<PropertyName>();

물론 다른 타입에 사용하는 get 을 붙여 만드는 것도 가능하고 둘 다 사용할 수 있습니다.


public boolean is<PropertyName>();
public boolean get<PropertyName>();


IntelliJ에서 원시 타입 boolean Getter/Setter 생성을 하면 아래와 같이 만들어 줍니다.

public class PrimitiveBooleanClass {
    private boolean primitiveBoolean;

    public boolean isPrimitiveBoolean() {
        return primitiveBoolean;
    }

    public void setPrimitiveBoolean(boolean primitiveBoolean) {
        this.primitiveBoolean = primitiveBoolean;
    }
}


그럼 클래스 타입 Boolean은 어떨까요? 이미 예상한 사람도 있겠지만 Boolean 클래스는 엄밀한 의미의 boolean이 아닙니다! 😧 


자바의 특성상 클래스 타입 변수에 null 값을 할당할 수 있는데 이로 인해 Boolean 타입은 이름 값을 하지 못하고 true/false/null 세가지 값을 가질 수 있게 됩니다. 그래서 클래스 타입 Boolean의 Getter를 IntelliJ에서 생성하면 get을 붙여 생성해주게 됩니다.


public class ClassBooleanClass {
    private Boolean classBoolean;

    public Boolean getClassBoolean() {
        return classBoolean;
    }

    public void setClassBoolean(Boolean classBoolean) {
        this.classBoolean = classBoolean;
    }
}

댓글