더북(TheBook)

4.3.1 열거의 메서드


열거 타입의 각 인스턴스는 유일하므로 열거 타입 값에 equals 메서드를 사용할 필요가 전혀 없다. 열거 타입 값을 비교할 때는 그냥 = =를 사용하면 된다(원한다면 equals를 호출해도 되지만, equals도 결국 = = 검사를 수행한다).

toString 메서드를 구현하지 않아도 된다. 열거 객체의 이름(이 예제에서는 "SMALL", "MEDIUM" 등)을 돌려주는 toString 메서드를 자동으로 제공하기 때문이다.

toString의 역은 각 열거 타입에 맞게 만들어지는 정적 메서드 valueOf다. 다음 코드를 보자.

Size notMySize = Size.valueOf("SMALL");


이 코드는 notMySizeSize.SMALL로 설정한다. valueOf 메서드는 지정한 이름에 해당하는 인스턴스가 없으면 예외를 던진다.

각 열거 타입에는 정적 메서드 values가 있다. 정적 메서드 values는 모든 인스턴스를 선언한 순으로 정렬한 배열을 반환한다. 다음 호출은 Size.SMALL, Size.MEDIUM 등을 요소로 담은 배열을 반환한다.

Size[ ] allValues = Size.values();


Tip icon2

향상된 for 루프에서 열거 타입의 모든 인스턴스를 순회할 때 values 메서드를 사용하면 된다.

for (Size s : Size.values()) { System.out.println(s); }

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.