본문 바로가기
Language/java

[Java] 지네릭스_지네릭 타입의 제거

by gamxong 2022. 7. 29.

지네릭 타입의 제거

 

: 컴파일된 파일(*.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);
}

 

댓글