Dart/OOP

Dart 문법 OOP - 제네릭

codeJunH 2024. 8. 21. 13:52

제네릭이란?

제네릭은 클래스나 함수 정의를 선언할 때가 아니라 인스턴스화하거나 실행할 때로 타입 결정을 미루는 프로그래밍 기법이다.

 

주요 특징:

  1. 특정 변수의 타입을 하나로 제한하지 않고 유연하게 사용할 수 있다.
  2. 코드 중복을 줄이고 재사용성을 높인다.
  3. 컴파일 시점에 타입 체크를 할 수 있어 런타임 오류를 줄일 수 있다.

 

 

Dart에서의 제네릭 사용 예

사실 우리는 이미 많은 곳에서 제네릭을 사용하고 있다:

여기서 <String>, <String, int>, <double>이 바로 제네릭 표현이다.

 

 

제네릭 클래스 만들기

직접 제네릭 클래스를 만들어 보겠다:

이 예제에서:

  • T는 타입 파라미터로, 실제 Box 객체를 생성할 때 구체적인 타입으로 대체된다.
  • Box 클래스는 어떤 타입의 값이든 저장할 수 있다.

 

 

제네릭 함수

함수에도 제네릭을 적용할 수 있다:

이 getFirst 함수는 어떤 타입의 리스트든 받아서 첫 번째 요소를 반환할 수 있다.

 

 

제네릭 타입 제한

특정 타입 또는 그 하위 타입만 허용하도록 제한할 수도 있다:

여기서 <T extends Animal>은 T가 Animal 클래스 또는 그 하위 클래스여야 함을 의미한다.

 

 

자주 사용되는 제네릭 타입 파라미터

개발자들 사이에서 관례적으로 사용되는 타입 파라미터가 있다:

  • T: Type (일반적인 타입)
  • E: Element (요소, 주로 컬렉션에서 사용)
  • K: Key (키, 주로 Map에서 사용)
  • V: Value (값, 주로 Map에서 사용)
  • R: Return (반환 타입)

이러한 관례를 따르면 다른 개발자들이 코드를 더 쉽게 이해할 수 있다.