코드팩토리의 플러터 프로그래밍 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 |