학습 기록/자바

Enum 비교는 '==' 을 사용하자

당중독자 카코 2024. 2. 22. 22:54

enum 객체 비교는 == 을 권장


이유 1. '==' 는 NullPointerException 을 발생시키지 않음

  • '==' 는 객체끼리 비교할 경우 메소드 호출 없이 객체의 참조만 비교하기 때문에 비교하는 대상이 null 이더라도 NPE 가 발생하지 않는다. if(obj == null) 이라면 NPE 가 발생하지 않고 false 가 반환된다. equals() 는 비교대상이 null 이면 NPE 를 발생시킴.

이유 2. '==' 는 컴파일 단계에서 타입 호환성을 검사한다.

  • '==' 로 다른 타입 객체를 비교하려고하면 컴파일 단계에서 에러를 발생시킨다. equals() 사용할 경우 컴파일 단계에서 검사하지 않고 그냥 false 를 반환한다.

이유 3. Enum 은 싱글톤 인스턴스기 때문에 '==' 사용해서 객체의 참조를 비교해도 다른 인스턴스를 가르키고 있을 가능성이 없음.