TestEnum aInstance = TestEnum.TYPE_A;
System.out.println(aInstance == TestEnum.TYPE_A); //print : true
System.out.println(aInstance.equals(TestEnum.TYPE_A)); //print : true
둘 다 정상적으로 비교, 결과를 도출한다.
TestEnum aInstance = null;
System.out.println(aInstance == TestEnum.TYPE_A); //print : false
System.out.println(aInstance.equals(TestEnum.TYPE_A)); //throw NullPointException
equals는 호출하는 instance가 null일 경우, Exception 발생
반면, 등호연산자(==)는 NullSafe
System.out.println(TestEnum.TYPE_A == TestEnum.TYPE_B); //Compile Error
System.out.println(TestEnum.TYPE_A.equals(TestEnum.TYPE_B)); //print : false
등호연산자(==)는 Compile 단계에서 Type Check를 통해 Error가 발생할 수 있음
(근데 이런 코드를 작성할까..?)