Free Lines Arrow
본문 바로가기
Language/Java

[Java] Generic Type Erasure

by skahn1215 2021. 10. 29.
728x90
반응형

Generic 

  • Generic Type erasure 를 알기전 Generic 개념을 알아야한다.
  • Geneirc 을 쓰면 많은 이점을 가지지만 주의해야 될 사항이 있다.
  • 바로 Generic Type erasure 이다.

2022.06.11 - [Language/Java] - [Java] Generic 기초

 

[Java] Generic 기초

Generic 제네릭에 대해 깊이 공부좀 해보자. 제네릭의 개념 제네릭의 타입 제네릭에서 경계와 제한 방법 제네릭 사용시 주의점 Generic 등장 배경 Generic 의 등장 배경은 컬렉션으로 부터 시작이 된다

vprog1215.tistory.com

 

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

댓글