2024/12/30 2

[Effective Java] 6-1. 열거 타입과 애노테이션

조슈아 블로크 님의 "Effective Java" 책을 정리한 포스팅 입니다.1. int 상수 대신 열거 타입을 사용하라정수 열거 타입 vs Enum항목정수 열거 타입 (int enum pattern)Enum (자바 열거 타입)타입 안정성❌ 잘못된 값도 전달될 수 있음✅ 컴파일 타임에 잘못된 값 차단 가능이름 공간❌ 상수 이름이 전역으로 퍼짐✅ 열거 타입 별도로 이름공간을 가짐유지보수상수 값 변경 시, 모든 클라이언트 코드 수정 필요상수 변경이 있어도 클라이언트 코드는 영향 거의 없음순회 (iterability)수동 작업 필요 (별도 배열 등)간단하게 순회 가능 (Enum.values())상수 개수 파악어렵거나 불명확함간단하게 확인 가능 (values().length)필드/메서드 추가 가능 여부❌ 단순..

Java 2024.12.30

[Effective Java] 5-3. 제네릭: 고려 사항

조슈아 블로크 님의 "Effective Java" 책을 정리한 포스팅 입니다. 1. 제네릭과 가변인수를 함께 쓸 때는 신중하라제네릭 varargs 배열 매개변수에 값을 저장하는 것은 안전하지 않음가변인수는 내부적으로 타입의 배열을 생성함제네릭 타입의 배열은 생성 불가생성 시, 힙 오염 발생 힙 오염public class Example { public static void unsafeMethod(T... args) { Object[] array = args; // args는 T[] 타입 배열로 생성됨 array[0] = "String"; // 런타임에는 Object로 처리되어 컴파일 가능 T t = args[0]; // ClassCastExc..

Java 2024.12.30