minjeong-oh
기록
minjeong-oh
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • ML & Neural Net (3)
    • ◼️GNN (1)
    • ◼️시계열 (1)
    • ◼️추천시스템 (0)
    • ◼️수학 (3)
    • Data Engineer (2)
    • ◼️Spark (1)
    • ◼️Kafka (1)
    • ◼️Elestic Search (0)
    • ◼️Redis (0)
    • ◼️ClickHouse (1)
    • Programming Language (4)
    • ◼️SQL (0)
    • ◼️React (0)
    • ◼️Git (1)
    • ◼️Python (1)
    • ◼️C++ (33)
    • ◼️Fortran 99 (2)
    • ◼️OpenGL (7)
    • ◼️MFC (35)
    • ◼️Flutter (46)
    • ◼️Kotlin (1)
    • ◼️Android (1)
    • ◼️Java (1)
    • ◼️C (4)
    • Development (0)
    • ◼️디자인패턴 (0)
    • ◼️네트워크 (2)
    • ◼️인증 (1)
    • Computer Science (4)
    • 알고리즘 문제풀이 (12)
    • SQL 고득점 Kit 문제풀이 (8)
    • 취업준비 (0)
    • Notion 정리 글 (1)
    • Article Scrap (12)
      • Careerly - Q&A (7)
      • Careerly - Post (2)
    • 기타 등등 (16)

블로그 메뉴

  • 글쓰기
  • 홈
  • 태그
  • 방명록
  • 편집

공지사항

인기 글

태그

  • 리눅스파티션
  • mfc
  • SpringBootSwagger
  • 이것이C++이다책참고
  • 그램업그레이드
  • 19년식그램SSD장착
  • OpenGL회전
  • GSLB
  • kafka구축
  • 인공지능개발자
  • NextJSSwagger
  • AI배워야하나
  • 19년식그램램장착
  • 티스토리폰트배경색없애기
  • 구조체매개변수
  • API문서정리
  • hello테마
  • 이차원구조체배열포인터
  • 구조체배열포인터
  • 그램풀스팩업그레이드

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
minjeong-oh

기록

[Flutter Dart] 제네릭 타입 - 객체지향의 꽃 <T>
◼️Flutter

[Flutter Dart] 제네릭 타입 - 객체지향의 꽃 <T>

2025. 1. 25. 07:42

코드팩토리의 플러터 프로그래밍 2판 책을 참고하여 공부용으로 작성한 게시글입니다.

 

📌 제네릭

특정 변수의 타입을 하나로 제한하고 싶지 않을 때 자주 사용한다.
클래스, 메서드, 함수, 그리고 Mixin 에서 사용가능 하다.

동일 제네릭문자를 가지고 있는 자리에 실행할 때 타입이 지정된다.

사용형태
클래스이름<제네릭문자>
메서드이름<제네릭문자>
함수이름<제네릭문자>
minxin클래스이름<제네릭문자>

흔히 쓰는 제네릭문자들
T: 변수 타입 표현할 때 
E: 리스트 내부 요소들의 타입을 표현할 때
K: 키를 표현할 때
V: 값을 표현할 때

 

Case 1. 클래스에서 제네릭 사용

class Box<T> {
  T value;

  Box(this.value);

  void display() {
    print("Value: $value");
  }
}

void main() {
  Box<int> intBox = Box(123);
  intBox.display(); // Value: 123

  Box<String> stringBox = Box("Hello");
  stringBox.display(); // Value: Hello
}

 

case 2. 메서드에서 제네릭 사용

class Utils {
  static T getFirst<T>(List<T> items) {
    return items[0];
  }
}

void main() {
  print(Utils.getFirst<int>([1, 2, 3]));     // 1
  print(Utils.getFirst<String>(["A", "B"])); // A
}

 

case 3. 함수에서 제네릭 사용

T getMiddleElement<T>(List<T> items) {
  return items[items.length ~/ 2];
}

void main() {
  print(getMiddleElement<int>([1, 2, 3, 4, 5]));     // 3
  print(getMiddleElement<String>(["A", "B", "C"])); // B
}

 

case 4. Mixin 에서 제네릭 사용

mixin Logger<T> {
  void log(T message) {
    print("Log: $message");
  }
}

class Printer with Logger<String> {}

void main() {
  Printer printer = Printer();
  printer.log("Hello, Dart!"); // Log: Hello, Dart!
}

 

 

 

#코드팩토리의플러터프로그래밍2판 #공부용

'◼️Flutter' 카테고리의 다른 글

[Flutter Dart] 캐스케이드 연산자 '..' 키워드  (0) 2025.01.25
[Flutter Dart] static  (0) 2025.01.25
[Flutter Dart] 클래스 - 추상 클래스 'abstract' 키워드  (0) 2025.01.25
[Flutter Dart] 클래스 - mixin 클래스, with 혼합  (0) 2025.01.25
[Flutter Dart] 클래스 - 인터페이스로 사용 implements  (0) 2025.01.25

    티스토리툴바