Dart / Flutter 泛型(Generics)
泛型类
dart
class Box<T> {
T value;
Box(this.value);
void show() {
print("Value: $value");
}
}
var intBox = Box<int>(123);
intBox.show(); // Value: 123
var strBox = Box<String>("hello");
strBox.show(); // Value: hello泛型方法
dart
T echo<T>(T data) {
return data;
}
print(echo<int>(456)); // 456
print(echo<String>("dart")); // dart泛型约束
dart
class Animal {
void eat() {
print("Animal eats");
}
}
class Dog extends Animal {
void bark() {
print("Dog barks");
}
}
// 泛型约束 T 必须继承自 Animal
class Cage<T extends Animal> {
T occupant;
Cage(this.occupant);
void show() {
occupant.eat();
}
}
var dogCage = Cage<Dog>(Dog());
dogCage.show(); // Animal eats多泛型
dart
class Pair<K, V> {
K key;
V value;
Pair(this.key, this.value);
void show() {
print("$key : $value");
}
}
var pair = Pair<String, int>("age", 18);
pair.show(); // age : 18