Flutter 泛型使用

List 通用泛型
List 表示在这个定义的List中只能存放字符串类型,如果添加数字类型,代码运行时就会报错

class Animal {}
class Cat extends Animal {}
class Bird extends Animal {}
class NewAnimal {
  String toString() => "创建一个新的小动物: 'Foo<$T>'";
}

为何使用泛型

  • 可以是代码的逻辑控制更严谨,有效的对程序进行类型检查
  • 有效减少重复代码
  • 并且在多种类型之间定义同一个接口实现

①不使用泛型

// 不用泛型 存储Object
abstract class ObjectData {
  Object getByKey(String key);
  void setByKey(String key,Object value);
}
// 不用泛型 存储String
abstract class StringData {
  String getByKey(String key);
  void setByKey(String key,String value);
}

②使用泛型

// 使用泛型
abstract class Data {
  T getByKey(String key);
  void setByKey(String key,T value);
}

使用

var cat = NewAnimal();
var bird = NewAnimal();
// 不传泛型默认为Animal
var animal = NewAnimal();
print('cat${cat}');
print('bird${bird}');
print('animal${animal}');

List animals = List();
animals.add(cat);
animals.add(bird);
animals.add(animal);
print('animals:${animals}');
// 输出结果
I/flutter (13815): cat创建一个新的小动物: 'Foo'
I/flutter (13815): bird创建一个新的小动物: 'Foo'
I/flutter (13815): animal创建一个新的小动物: 'Foo'
I/flutter (13815): animals:[创建一个新的小动物: 'Foo', 创建一个新的小动物: 'Foo', 创建一个新的小动物: 'Foo']

你可能感兴趣的:(Flutter 泛型使用)