728x90
반응형
Generic
- Generic Type erasure 를 알기전 Generic 개념을 알아야한다.
- Geneirc 을 쓰면 많은 이점을 가지지만 주의해야 될 사항이 있다.
- 바로 Generic Type erasure 이다.
2022.06.11 - [Language/Java] - [Java] Generic 기초
Generic Type Erasure
- 지네릭을 쓰게 되면 컴파일 시점에는 타입을 체크하지만, 런타임 환경에서는 타입을 체크 하지 않는다.
- 즉 타입을 지운다는 얘기다.
Generic Type Erasure 예제
컴파일 전
// 클래스인 경우
public class MyClass<T> {
public void MyClass(T paramA) {
System.out.println(paramA);
}
}
// 리스트인 경우
List<Member> members = getMembers();
컴파일 시점
- 클래스인 경우 T 타입이 사라지거나 Object로변환된다.
- List 에서는 Member 라는 타입이 사라졌다.
// 클래스인 경우
public class MyClass {
public void MyClass(Object paramA) {
System.out.println(paramA);
}
}
List members = getMembers();
Generic Type Erasure 문제점
- 그렇다면 타입이 사라지는게 뭐가 문제인가?
- 당연 타입을 체크 하지 않으니 런타임 도중 Casting Exception 이 발생할수도 있을것 같다.
- List<Member> members 가 있다면 members에 다른 타입이 들어갈수도 있다고 생각한다.
728x90
반응형
'Language > Java' 카테고리의 다른 글
[Java] Double의 제한사항 (0) | 2021.12.11 |
---|---|
[Java] BigDecimal (2) | 2021.12.11 |
[Java] HashMap, hashCode(), equals() (0) | 2021.09.06 |
[Java] getter 와 setter (0) | 2021.09.05 |
[Java] Null 안전하게 다루기 (0) | 2021.08.24 |
댓글