1. 지네릭 타입의 형변환
- 지네릭 타입과 원시 타입 간의 형변환은 바람직 하지 않다.(경고 발생)
Box<Object> objBox = null;
Box box = (Box)objBox; // OK. 지네릭 타입 -> 원시 타입, 경고 발생
objBox = (Box<Object>)box; // OK. 원시 타입 -> 지네릭 타입, 경고 발생
objBox = (Box<Object>)strBox; // 에러. Box<String> -> Box<Object>
strBox = (Box<String>)objBox; // 에러. Box<Object> -> Box<String>
- 와일드 카드가 사용된 지네릭 타입으로는 형변환 가능
Box<? extends Object> wBox = (Box<? extends Object>)new Box<String>(); // OK.
Box<? extends Object> wBox = new Box<String>(); // 위 문장과 동일
2. 지네릭 타입의 제거
- 컴파일러는 지네릭 타입을 제거하고, 필요한 곳에 형변환을 넣는다.
- 지네릭 타입 제거 후에 타입이 불일치하면, 형변환을 추가
- 와일드 카드가 포함된 경우, 적절한 타입으로 형변환 추가
'Java' 카테고리의 다른 글
122. 열거형멤버 추가하기 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.01.03 |
---|---|
121. 열거형 - 패스트캠퍼스 백엔드 부트캠프 3기 (2) | 2025.01.03 |
119. 와일드카드, 지네릭 메서드 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.01.03 |
118. 제한된 지네릭 클래스, 지네릭스의 제한 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.01.03 |
117. Iterator, HashMap과 지네릭스 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.01.03 |