이펙티브 자바
[이펙티브 자바] 아이템 26. 로 타입은 사용하지 말라
stdio.han
2024. 3. 27. 18:03

로 타입(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); // 형변환 불필요
결론 : 로 타입을 사용하면 런타임에 예외가 일어날 수 있으니 사용하면 안된다.