enum타입을 이용하여 ==과 eqauls() 연산을 했을때 같은 값을 비교한다는 연산에 있어서는 같다.
public Enum Season {
SPRING,
SUMMER
}
public class Main {
public static void main(String[] args) {
Season seasonInstance = Season.SPRING;
System.out.println(seasonInstance == Season.SPRING); // true
System.out.println(seasonInstance.equals(Season.SPRING)); // true
}
}
public class Main {
public enum Season {
SPRING,
SUMMER
}
public static void main(String[] args) {
Season seasonInstance = null;
System.out.println(seasonInstance == Season.SPRING); // false
System.out.println(seasonInstance.equals(Season.SPRING)); // NPE
}
}
==
는 NPE를 발생시키진 않지만 equals()
는 NPE를 발생시킨다.
public class Main {
public enum Season {
SPRING,
SUMMER
}
public enum Framework {
SPRING,
DJANGO
}
public static void main(String[] args) {
System.out.println(Season.SPRING.equals(Framework.SPRING)); // false
System.out.println(Season.SPRING == Framework.SPRING); // incomparable types, compile error
}
}
equals()
는 컴파일 에러가 발생하지 않는 반면, ==
는 컴파일 에러를 발생시킨다.
eqauls()
나 ==
는 같다.
==의 장점
- 잘 동작한다
- 좀더 빠르다
- runtime-time에서 안전하다
- compile-time에서 안전하다