Flutter开发

Flutter 泛型使用

2019-11-04  本文已影响0人  StevenHu_Sir

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

class Animal {}
class Cat extends Animal {}
class Bird extends Animal {}
class NewAnimal<T extends Animal> {
  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> {
  T getByKey(String key);
  void setByKey(String key,T value);
}

使用

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

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

猜你喜欢

热点阅读