지네릭 타입의 제거
: 컴파일된 파일(*.class)에는 지네릭 타입에 대한 정보가 없다. (호환성을 위해)
제거 과정
1. 지네릭 타입의 경계를 제거한다.
- 지네릭 타입이 <T extends Fruit>라면 T는 Fruit로 치환된다.
- <T>인 경우에는 T는 Object로 치환된다. 그리고 클래스 옆의 선언은 제거된다.
class Box<T extends Fruit> {
void add(T t) {
...
}
}
// after
class Box {
void add(Fruit t) {
...
}
}
2. 지네릭 타입을 제거한 후에 타입이 일치하지 않으면, 형변환을 추가한다.
- List의 get()은 Object타입을 반환하므로 형변환이 필요하다.
T get(int i) {
return list.get(i);
}
// after
Fruit get(int i) {
return (Fruit)list.get(i);
}
'Language > java' 카테고리의 다른 글
[Java] 열거형_열거형에 멤버 추가하기 (0) | 2022.07.30 |
---|---|
[Java] 열거형_열거형이란? (0) | 2022.07.30 |
[Java] 지네릭스_지네릭 타입의 형변환 (0) | 2022.07.29 |
[Java] 지네릭스_지네릭 메서드 (0) | 2022.07.29 |
[Java] 지네릭스_와일드 카드 (0) | 2022.07.29 |
댓글