DEV ℧ Developer Diary

[EffectiveJava] item36 - 비트 필드 대신 EnumSet을 사용하라

열거한 값들이 주로 (단독이 아닌) 집합으로 사용될 경우, 예전에는 각 상수에 서로 다른 2의 거듭제곱 값을 할당한 정수 열거 패턴을 사용했다고 한다.

비트 필드

public class Text { public static final int...

[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...