Item 26 : 로 타입을 사용하지 말라
2021. 7. 25. 22:29
용어 정리 : 제네릭클래스, 제네릭 인터페이스
=> 클래스와 인터페이스 선언에 타입 매개변수가 쓰이는 클래스나 인터페이스
제네릭 클래스나 제네릭 인터페이스를 제네릭 타입이라 한다.
제네릭 타입을 하나 정의하면 그에 딸린 로 타입도 함께 정의된다.
로 타입이란 제네릭 타입에서 타입 매개변수를 전혀 사용하지 않을때를 말한다.(ex, List 처럼 쓰는것이 아닌 List만 쓰는것)
이 챕터의 핵심은 raw type을 쓰지 말자는 것이고
쉽게 이해하면 매개변수 삽입에 오류가 발생할 수 있기 때문에 안정성을 위해
타입 매개변수를 명시해주는 것이 중요하다.
정 raw type처럼 사용하고 싶다면 List<Object>
Object를 사용하면 모든 타입을 허용한다는 의사를 컴파일러에 명확히 전달하는 것이고
?(와일드카드)를 사용 하는 것은 실제 타입 매개변수가 무엇인지 신경 쓰고싶지 않을 때 사용하는 것이다.
raw type을 사용해도 되는경우는
- class 리터럴을 사용하는 경우
- instanceof 연산자를 사용하는 경우 정도이다.
if (o instanceof Set){ // 로타입
Set<?> s = (Set<?>)o //와일드카드 타입
....
}
'책 > 이펙티브자바' 카테고리의 다른 글
Item 28 : 배열보다는 리스트를 사용하라 (0) | 2021.07.27 |
---|---|
Item 27 : 비검사 경고를 제거하라 (0) | 2021.07.26 |
Item 25 : 탑클래스는 한 파일에 하나만 담으라 (0) | 2021.07.25 |
Item 24 : 멤버 클래스는 되도록 static으로 만들라 (0) | 2021.07.24 |
Item 23 : 태그 달린 클래스보다는 클래스 계층구조를 활용하라 (0) | 2021.07.22 |