Dev Books/Effective Java32 [item 36] 비트 필드 대신 EnumSet을 사용하라 비트 필드비트별 OR를 사용해 여러 상수를 하나의 집합으로 모을 수 있으며, 이렇게 만들어진 집합을 비트 필드(bit field)라고 한다. public class Text { public static final int STYLE_BOLD = 1 비트 필드의 문제점비트 필드를 사용하면 비트별 연산을 사용해 합집합과 교집합 같은 집합 연산을 효율적으로 수행할 수 있지만 단점이 있다. 1. 비트 필드는 정수 열거 상수의 단점을 지닌다.비트 필드는 결국 정수 값으로 관리되기 때문에, 컴파일 시점 타입 체크가 어렵고, 의미 없는 값이 들어갈 가능성이 있다. public class Main { public static final int READ = 1 7과 같은 의미 없는 값이 전달되어도 컴파일 오류가 발.. 2025. 2. 17. [item 35] ordinal 메서드 대신 인스턴스 필드를 사용하라 ordinal 메서드모든 열거 타입은 해당 상수가 그 열거 타입에서 몇 번째 위치인지를 반환하는 ordinal이라는 메서드를 제공한다.ordinal 메서드 잘못 쓸 때1. 상수 선언 순서를 바꾸는 순간 오동작한다.public enum OrderStatus { PENDING, DELIVERED, // 순서를 바꿈 (original: 2) SHIPPED, // original: 1 CANCELLED}만약 OrderStatus 열거형의 상수 선언 순서를 바꾸면, ordinal() 값이 변한다. 2. 이미 사용 중인 정수와 값이 같은 상수는 추가할 방법이 없다.public enum OrderStatus { PENDING, // 0 SHIPPED, // 1 .. 2025. 2. 17. [item 34] int 상수 대신 열거 타입을 사용하라 열거 타입(Enum)일정 개수의 상수 값을 정의한 다음, 그 외의 값은 허용하지 않는 타입이다. 자바에서 서로 연관있는 상수를 편리하게 관리하기 위해 사용한다. 요일, 순위, 성적 등을 나타내기 위해 사용한다. public enum Week { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY}1. 정수 열거 패턴 (int enum pattern)자바에서 열거 타입을 지원하기 전에는 다음 코드처럼 정수 상수를 한 묶음 선언해서 사용하곤 했다. public static final int APPLE_FUJI = 0;public static final int APPLE_PIPPIN = 1;public sta.. 2025. 2. 13. [item 33] 타입 안전 이종 컨테이너를 고려하라. 타입 안전 이종 컨테이너 패턴제네릭은 Set, Map 등의 컬레션과 ThreadLocal, AtomicReference 등의 단일원소 컨테이너에도 흔히 쓰인다. 여기서, 매개변수화되는 대상은 (원소가 아닌) 컨테이너 자신이다. // ✅ Set이 매개변수화됨Set numberSet = new HashSet();// ✅ List가 매개변수화됨List numberList = new ArrayList();// ✅ Map이 매개변수화됨Map idToName = new HashMap(); Set에서 제네릭이 적용된 대상은 Set다. List에서 제네릭이 적용된 대상은 List다. Map에서 제네릭이 적용된 대상은 Map이다. 타입 안전 이종 컨테이너 패턴(type safe heterogeneous con.. 2025. 2. 7. 이전 1 2 3 4 5 6 7 8 다음