DEV ℧ Developer Diary

[EffectiveJava] item35 - ordinal 메서드 대신 인스턴스 필드를 사용하라

대부분의 열거 타입 상수는 자연스럽게 하나의 정숫값에 대응된다.
그리고 모든 열거 타입은 해당 상수가 그 열거 타입에서 몇 번째 위치인지를 반환하는 ordinal이라는 메서드를 제공한다.

@Test void ordinal_Test() { for (Operation op...

[EffectiveJava] item34 - int 상수 대신 열거 타입을 사용하라

열거 타입은 일정 개수의 상수 값을 정의한 다음, 그외의 값은 허용하지 않는 타입이다.

열거 타입(Enum Type)은 Java5 이후에 생긴 기능으로 그 이전에는 int나 String의 상수 값을 이용해 정수 열거 패턴을 구현했다.

public static final int APPLE_FUJI...

[EffectiveJava] item33 - 타입 안전 이종 컨테이너를 고려하라

제네릭은 Set\<E\>, Map<K,V> 등의 컬렉션과 ThreadLocal<T>, AtomicReference<T> 등의 단일원소 컨테이너에도 흔히 쓰인다. 이런 모든 쓰임에서 매개변수화 되는 대상은 (원소가 아닌) 컨테이너 자신이다. 따라서 하나의 컨테이너에서 매개변수화할 수 있는 타입의 수가 제한된다.

하지만 더 유연한 수단이 필요할때가 종종있다.

컨테이너 대신 키를 매개변수화한...

[EffectiveJava] item32 - 제네릭과 가변인수를 함께 쓸 때는 신중해라

먼저 가변인수 메서드에 대해 가볍게 정리를 하고 넘어가자

가변인수(varargs) 메서드란? 아래의 메소드와 같이 매개변수를 n개 이상으로 받는 메서드를 말한다.

public List<String> getStringList(String... words) { return Arrays<span...

[Java] Comparable을 이용해 객체를 한글, 영어, 숫자 순 정렬하기

Comparable<T> interface는 구현한 객체에 정렬기준을 정해 Array.sort()나 Collections.sort()를 통해 정렬을 했을때, Comparable<T>를 구현한 compareTo를 기준으로 객체의 순서를 정렬해주는 interface이다.

아래의 Node 객체는 단순한 String type의 name을 필드로 가지고 있는 객체이다.

한번 Comparable<T>를 구현해 한글, 영어, 숫자 순으로...