Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java) 제네릭 컬렉션의 개념과 핵심 장점 총정리

제네릭 컬렉션(Generic Collections)은 Java 5 버전에서 처음 도입된 기능입니다. 제네릭을 사용하면 타입 캐스팅(type-casting)이 불필요해지며, 코드 작성 시 형 변환 없이도 안전하게 데이터를 다룰 수 있습니다. 또한 제네릭 컬렉션은 타입 안전성(type-safe)을 보장하며, 오류를 컴파일 타임(compile-time)에 미리 검사할 수 있어 런타임 오류를 크게 줄여줍니다.

제네릭 컬렉션은 데이터 타입을 클래스나 인터페이스에 매개변수처럼 전달할 수 있게 해주며, 전달된 타입 간의 호환성 검사는 컴파일러가 담당합니다.

기본 문법

class<type>, interface<type>

1. 타입 안전성 (Type Safety)

제네릭을 사용하면 지정한 한 가지 타입의 객체만 저장할 수 있습니다. 아래 예시를 보면 그 차이가 명확합니다.

List list = new ArrayList(); // 제네릭 사용 전
list.add(10);
list.add("100"); // 정수와 문자열이 섞여 저장됨

List<Integer> list1 = new ArrayList<Integer>(); // 제네릭 적용
list1.add(10);
list1.add("100"); // 컴파일 타임 에러 발생

제네릭을 적용하기 전에는 서로 다른 타입이 하나의 리스트에 섞여 들어갈 수 있었지만, List<Integer>처럼 타입을 지정하면 잘못된 타입의 데이터 추가 시 컴파일 단계에서 즉시 오류가 발생해 사전에 문제를 잡아낼 수 있습니다.

2. 불필요한 타입 캐스팅 제거

제네릭을 사용하면 값을 꺼낼 때마다 형 변환을 할 필요가 없습니다.

List<String> list = new ArrayList<String>();
list.add("Adithya");
String str = list.get(0); // 타입 캐스팅 불필요

제네릭을 사용하지 않으면 (String) list.get(0)처럼 명시적인 캐스팅이 필요하지만, 제네릭으로 저장 타입을 미리 선언했기 때문에 코드가 더 간결하고 가독성이 좋아집니다.

3. 컴파일 타임 오류 검사

제네릭의 가장 큰 장점 중 하나는 오류를 실행 시점이 아닌 컴파일 타임에 확인할 수 있다는 점입니다.

List list = new ArrayList(); // 제네릭 사용 전
list.add(10);
list.add("100");

List<Integer> list1 = new ArrayList<Integer>(); // 제네릭 적용
list1.add(10);
list1.add("100"); // 컴파일 타임 에러

런타임에 발견되는 ClassCastException 같은 오류를 컴파일 단계에서 미리 방지할 수 있어 프로그램의 안정성과 신뢰성이 크게 향상됩니다.

정리

자바의 제네릭 컬렉션은 타입 안전성 보장, 타입 캐스팅 제거, 컴파일 타임 오류 검사라는 세 가지 핵심 이점을 제공합니다. 덕분에 개발자는 더 안전하고 유지보수하기 쉬운 코드를 작성할 수 있습니다.