본문 바로가기

이펙티브 자바

[이펙티브 자바] 아이템 26. 로 타입은 사용하지 말라

로 타입(raw type) : 제네릭 클래스나 인터페이스에서 타입 매개변수를 명시하지 않고 raw 타입으로 사용하는 것을 의미

 

제네릭 : 자바에서 컬렉션 클래스 및 메서드, 인터페이스 등을 작성할 때 타입을 파라미터화하는 기능

 

컬렉션 클래스 : 자바에서 데이터를 모으고 관리하는 데 사용되는 클래스들의 집합

 

//잘못된 예
List list = new ArrayList(); // 로 타입 사용

list.add("hello");
list.add(123);

String str = (String) list.get(0); // 형변환 필요
int num = (int) list.get(1); // 형변환 필요

//옳은 예
List<String> list = new ArrayList<>(); // 제네릭 사용

list.add("hello");
// list.add(123); // 컴파일 오류: 타입 불일치

String str = list.get(0); // 형변환 불필요

 

결론 : 로 타입을 사용하면 런타임에 예외가 일어날 수 있으니 사용하면 안된다.