제네릭(Generic)

김형준 Kim Hyeong Jun·2023년 2월 27일
0
post-thumbnail

제네릭이란?

"데이터의 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입을 가질 수 있도록 하는 방법"이다.

기본적으로 컬렉션 클래스를 사용할 때 우리는

List<String> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();

와 같이 <> 괄호 안에 들어가는 타입을 지정해준다.

만약 우리가 어떤 자료구조를 만들어 배포하려 할 때, 다양한 타입을 지원하고 싶다면 지원하고 싶은 타입의 수만큼 하나하나 만들어야할까? 이는 너무 비효율적일 것이다. 이러한 문제를 해결하기 위해 우리는 제네릭을 사용한다.

제네릭은 클래스 내부에서 사용할 데이터 타입을 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것을 의미한다. 한마디로 특정 타입을 미리 지정해주는 것이 아닌 필요에 의해 지정할 수 있도록 하는 일반(Generic) 타입이라는 것이다.

장점

  • 제네릭을 사용하면 잘못된 타입이 들어올 수 있는 것을 컴파일 단계에서 방지할 수 있다.
  • 클래스 외부에서 타입을 지정해주기 때문에 따로 타입을 체크하고 변환해줄 필요가 없다. 즉, 관리하게 편하다.
  • 비슷한 기능을 지원하는 경우 코드의 재사용성이 높아진다.

컬렉션 클래스에서 왜 제네릭을 사용할까?

컬렉션은 제네릭 기법으로 구현되어 있다.
컬렉션은 여러 타입의 값을 다룰 수 있도록 제네릭을 통해 구현한 자료구조이지만, 실행 중에 컬렉션을 생성하고 사용할 때는 오직 한 타입의 값만 저장하고 다룬다.

컬렉션에 제네릭 타입을 이용함으로써 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있다.


Reference

제네릭(Generic)의 이해
자바 제네릭(Generics) 기초
[JAVA] 자바 제네릭(Generic) 기본 및 활용
[Java] 제네릭을 사용하는 이유
제네릭과 컬렉션
자바 제네릭(Generics)과 컬렉션(Collections)
[Java] 제네릭

profile
I want be a developer🙂

0개의 댓글