제네릭스(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 |
댓글