로 타입(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); // 형변환 불필요
결론 : 로 타입을 사용하면 런타임에 예외가 일어날 수 있으니 사용하면 안된다.
'이펙티브 자바' 카테고리의 다른 글
[이펙티브 자바] 아이템 28. 배열보다는 리스트를 사용하라 (0) | 2024.03.28 |
---|---|
[이펙티브 자바] 아이템 27. 비검사 경고를 제거하라 (0) | 2024.03.27 |
[이펙티브 자바] 아이템 25. 톱레벨 클래스는 한 파일에 하나만 담으라 (0) | 2024.03.25 |
[이펙티브 자바] 아이템 24. 멤버 클래스는 되도록 static으로 만들라 (0) | 2024.03.25 |
[이펙티브 자바] 아이템 23. 태그 달린 클래스보다는 클래스 계층구조를 활용하라 (2) | 2024.03.22 |