Dart 언어 오답노트 : 27. generic

샤워실의 바보·2023년 10월 26일
0
post-thumbnail
void main() {
  Lecture<String> lecture1 = Lecture('123', 'lecture1');
  lecture1.printIdType();
  Lecture<int> lecture2 = Lecture(123, 'lecture2');
  lecture2.printIdType();
}

class Lecture<T> {
  final T id;
  final String name;

  Lecture(this.id, this.name);

  void printIdType() {
    print(id.runtimeType);
  }
}

제네릭(Generic)은 Dart와 같은 프로그래밍 언어에서 타입의 안정성을 제공하고 코드의 재사용성을 높이기 위해 사용되는 기능입니다. 제네릭을 사용하면 클래스, 함수, 메서드 등을 정의할 때 특정 타입이 아닌 타입 매개변수를 사용하여 다양한 타입에 대해 작동하는 범용 코드를 작성할 수 있습니다.

위의 코드에서 Lecture라는 클래스는 제네릭을 사용하여 정의되었습니다. Lecture 클래스는 T라는 타입 매개변수를 가지며, 이 매개변수는 id 속성의 타입을 결정합니다. name 속성의 타입은 항상 String입니다.

main 함수에서 두 개의 Lecture 인스턴스를 생성하고 있습니다:

  1. lecture1: String 타입의 id를 가지는 Lecture 인스턴스

    • Lecture<String>('123', 'lecture1')
    • idString 타입, name'lecture1'이 됩니다.
    • printIdType 메서드를 호출하면 String이 출력됩니다.
  2. lecture2: int 타입의 id를 가지는 Lecture 인스턴스

    • Lecture<int>(123, 'lecture2')
    • idint 타입, name'lecture2'이 됩니다.
    • printIdType 메서드를 호출하면 int가 출력됩니다.

printIdType 메서드는 id의 런타임 타입을 출력하는 메서드입니다. runtimeType 프로퍼티를 사용하여 객체의 타입을 런타임에 확인할 수 있습니다.

이렇게 제네릭을 사용하면 Lecture 클래스를 다양한 타입의 id를 가지는 여러 상황에서 재사용할 수 있으며, 동시에 컴파일 시간에 타입 안정성을 보장받을 수 있습니다. 이는 코드의 오류를 줄이고 유지보수성을 향상시키는 데 도움이 됩니다.

profile
공부하는 개발자

0개의 댓글