반응형
Generic은 타입을 외부에서 받을 때 사용한다.
class Lecture {
final int id;
final String name;
Lecture(this.id, this name);
}
이런 Class가 있다고 보면,
Lecture은 class외부에서 생성자를 input으로 받게 되는데
타입은 사실 받기 어렵다. 이미 class내부에서 정의내렸기 때문이다.
void main() {
Lecture<String> lecture1 = Lecture('123','lecture1'); // String이니까 잘 들어간다
}
class Lecture<T> { // <>사이에 무엇을 넣어도 상관없는데 보통T넣는다.
final T id;
final String name;
Lecture(this.id, this.name);
}
class 외부에서 타입을 지정하고 싶으니까 <T>을 붙여줬고
인스턴스에도 타입을 T로 바꿔 놓으면
Lecture<Type>에 따라서 input에 Type에 맞는 값을 위 코드처럼 적당하게 넣어 줄 수있다.
runtimeType으로 타입을 확인해보면
내가 설정한 타입으로 잘 설정된지 확인 할 수 있다.
void main() {
Lecture<String> lecture1 = Lecture('123','lecture1');
lecture1.printIdType();
Lecture<int> lecture2 = Lecture(123, 'lecture2');
lecture2.printIdType();
}
class Lecture<T> { // <>사이에 무엇을 넣어도 상관없는데 보통T넣는다.
final T id;
final String name;
Lecture(this.id, this.name);
void printIdType() {
print(id.runtimeType);
}
}
타입 여러개를 받고 싶은 경우
void main() {
Lecture<String, String> lecture1 = Lecture('123','lecture1');
lecture1.printIdType();
Lecture<int, String> lecture2 = Lecture(123, 'lecture2');
lecture2.printIdType();
}
class Lecture<T,X> { // <>사이에 무엇을 넣어도 상관없는데 보통T넣는다.
final T id;
final X name;
Lecture(this.id, this.name);
void printIdType() {
print(id.runtimeType);
}
}
이렇게도 generic이 가능하다
반응형
'Flutter > Dart 문법' 카테고리의 다른 글
[Dart] map(List mapping, Map mapping, Set Mapping) (0) | 2023.03.23 |
---|---|
[Dart] 이어진 숫자 분리해서 List/map 적용하기 (0) | 2023.03.23 |
[Dart] 인터페이스(abstract) (0) | 2023.03.22 |
[Dart] Static (0) | 2023.03.22 |
[Dart] 오버라이딩 (0) | 2023.03.22 |