제너릭 타입의 형변환
- 제너릭 타입과 원시 타입간의 형변환은 바람직 하지 않다(경고발생)
(제너릭이 없는 타입은 원시타입)
Box<Object> objBox = null;
Box box = (Box) objBox;
objBox = (Box<Object>)box;
objBox = (Box<Object>)strBox;
strBox = (Box<String>)objBox;
- 와일드 카드가 사용된 제너릭 타입으로는 형변환 가능
Box<Object> objBox = (Box<Object>)new Box<String>();
Box<? extends Object> wBox = (Box<? extends Object>)new Box<String>();
Box<? extends Object> wBox = new Box<String>();
제너릭 타입의 제거
- 컴파일러는 제너릭 타입을 제거하고, 필요한 곳에 형변환을 넣는다.
- 제너릭 타입의 경계를 제거
- 제너릭 타입 제거 후에 타입이 불일치하면, 형변환을 추가
- 와일드 카드가 포함된 경우, 적절한 타입으로 형변환 추가