사용자 도구

사이트 도구


java:generics

Java Generics

Type Erasure

Java Generic은 컴파일 타임에만 타입 체킹용으로 사용되고, 실행시간에는 모두 Genric이 삭제된 상태로 동작한다. 컴파일러는 필요할 경우 타입 캐스팅 코드를 넣어서 컴파일 한다.

현재 객체의 Generic Type 파라미터 클래스 알아내기

  • Type erasure 때문에 원칙적으로는 파라미터로 온 객체의 제너릭 타입을 알아낼 수 는 없다. 하지만 클래스가 제너릭일 경우 클래스 자신의 타입은 알아낼 수 있다.
Nope, that is not possible. Due to downwards compatibility issues, Java's generics are based on type erasure, i.a. at runtime, all you have is a non-generic List object. There is some information about type parameters at runtime, but it resides in class definitions (i.e. you can ask "what generic type does this field's definition use?"), not in object instances.
  • 아래의 결과는 Class 들의 배열이므로 원하는 순서의 것을 빼서 사용하면 된다.
Type[] classes = ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments();

참조

java/generics.txt · 마지막으로 수정됨: 2020/09/18 21:41 저자 kwon37xi