카테고리 없음

제너릭(Generic)이란?

신승호. 2023. 1. 26. 14:57

제너릭은 타입 매개변수를 통해 다양한 타입에 대한 유연한 대처를 가능하게 한다.

List에서 <>부분에 타입 매개변수(Type parameter)를 지정한다.

<>에 타입 매개변수를 선언하는 것을 매개변수화 타입(Parmeterized type)을 정의한다고 한다.

제너릭을 사용하면 변수 타입을 명확히 표현할 수 있다는 장점과 반복되는 코드를 줄일 수 있다는 장점이 있다

타입 매개변수

매개변수는 클래스 생성 시 생성자에서 사용하거나 함수 호출 시 인자 값을 전달하기 위해 사용한다. 타입 매개변수는 말 그대로 전달하는 것이 인자 값이 아니라 타입이라고 생각하면 된다.

 

예)  List<String> colors = List();

       colors.add('Red');

위 경우는 List에서 타입 매개변수를 <String>으로 지정한 것이다. 이것은 해당 List에 String타입으로 넘겨준 것을 의미한다. 따라서 해당 List에는 String타입의 값만 넣을 수 있다. 하지만 List 생성 시 타입 매개변수를 다른 타입으로 줄 수도 있다

 

예)  List<int>  numbers= List();

      numbers.add(1);

위 경우는 타입 매개변수를 int로 지정하면 int 타입 값만 넣을 수 있는 List가 생성된다. 이런 식으로 매개변수에 값을 넘겨주듯이 타입을 넘겨줄 수 있는 것이 제네릭의 핵심이다.

 

String과 int를 다루는 List를 각각 생성한다고 가정하면 add()메서드만 2개가 필요하다. 다른 메서드들까지 고려하면 그 수가 아주 많아진다. 그러나 제네릭을 사용하면 단 하나의 코드로 다양한 타입에 대한 커버가 가능하다.