泛型
與Java中泛型的區別
-
Java中泛型是編譯時的, 泛型信息在運行中是不存在的
-
Dart中的泛型是固定化的, 在運行時候也有可以判斷的具體類型
main() { var list = List<String>(); list.add('sdsds'); print('${list.runtimeType}, ${list is List<String>}'); // print: List<String>, true }
泛型函數
main() {
var t = method1('t', 123234);
print('t: $t');
}
// 泛型函數
T method1<T, K>(T t, K k) {
print('t: $t, k: $k');
return t;
}
泛型構造函數
main() {
var clazzN = Name<String>('Elvis');
print('${clazzN.name}');
}
// 泛型構造函數
class Name<T> {
T name;
Name(this.name);
}
泛型限制
main() {
var aFeature = AnimalFeature(Actions());
aFeature.act.doSth();
}
class Actions{
void doSth() {
print('蹦蹦跳跳');
}
}
// 泛型限制
class AnimalFeature<T extends Actions> {
T act;
AnimalFeature(this.act);
}