본문 바로가기
java/basic 문법

제네릭스 타입 컴파일 Generics type erasure

by 일상코더 2022. 10. 8.

제네릭스(Generics)란?

 

   - 데이터 타입을 일반화(Generalize)하는 것을 의미

   - 다양한 타입의 객체들을 다루는 메소드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능

  

제네릭스를 사용하는 이유

   - 클래스나 메소드 내부에서 사용되는 객체의 안정성을 높일 수 있다.

   - 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다.

 

제네릭스의 형식

public class 클래스명<T> {...}
public interface 인터페이스명<T> {...}

<T> == Type
<E> == Element
<K> == Key
<V> == Value
<N> == Number
<R> == Result

   

Java Generics Type Erasure(제네릭 타입소거)

구체화 vs 비구체화

  • 구체화 타입(reifiable type) : 자신의 타입 정보를 런타임에도 알고 있는것. 배열이 구체화 타입에 해당된다.
  • 비구체화 타입(non-reify type) : 런타임에는 소거(erasure)가 되기 때문에 컴파일 타임보다 정보를 적게 가지는 것. 제네릭 타입이 비구체화 타입에 해당되며, 제네릭은 컴파일 타임에 타입 체크를 한 뒤 런타임에는 타입을 지우는 방법을 사용하고 있다.

 

'java > basic 문법' 카테고리의 다른 글

scope, static  (0) 2022.09.27
인터페이스(interface)  (0) 2022.08.04
추상클래스  (0) 2022.08.04
상속(inheritance)  (0) 2022.08.02
생성자(constructor)  (0) 2022.08.02

댓글