dart中的泛型

本文介绍了Dart编程语言中的泛型方法和泛型类的使用。通过示例展示了如何使用泛型方法实现类型安全的数据返回,以及泛型类如何创建可容纳不同类型数据的列表,并进行添加和打印操作。示例中,泛型方法`getData<T>`能够根据传入的类型返回相应类型的值,而`PrintClass<T>`泛型类则演示了如何创建和管理类型安全的列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
1.泛型方法

getData<T>(T value) {
  return value;
}

void main() {
  print(getData<int>(13));

  print(getData<String>('hello dart!'));
}
输出结果:
13
hello dart!

2.泛型类

在这里插入图片描述
代码:

class PrintClass<T> {
  List list = new List<T>();
  void add(T value) {
    this.list.add(value);
  }

  void printInfo() {
    for (var i = 0; i < this.list.length; i++) {
      print(this.list[i]);
    }
  }
}

void main() {
  PrintClass p = new PrintClass<String>();

  p.add('hello');
  p.add('name');
  p.add('say');

  p.printInfo();
}

Dart 是一种支持的面向对象语言,它允许我们在定义类、函数或方法时使用参数化类允许我们在不指定具体类的情况下编写通用的代码,提高代码的重用性和安全性。 在 Dart 中,的类变化可分为两种:类的协变(Covariance)和类的逆变(Contravariance)。 类的协变指的是可以将的子类赋值给父类,这样就可以确保在使用时不会发生类不匹配的错误。例如,如果有一个类 Animal<T>,其中 T 是一个类参数,那么 Animal<Dog> 就是 Animal<Animal> 的子类。这样我们可以使用 Animal<Animal> 类的变量来持有 Animal<Dog> 的实例,而不会出现类错误。 类的逆变与协变相反,指的是可以将的父类赋值给子类。这样可以更灵活地使用,更好地符合实际的业务需求。例如,如果有一个类 Comparator<T>,其中 T 是一个类参数,那么 Comparator<Animal> 就是 Comparator<Dog> 的父类。这样我们可以使用 Comparator<Dog> 类的变量来持有 Comparator<Animal> 的实例,而不会出现类错误。 变在 Dart 中使用通配符来表示,的协变使用 extends 关键字,逆变使用 super 关键字。例如,在声明一个时,我们可以使用 Animal<? extends Animal> 表示协变,使用 Comparator<? super Dog> 表示逆变。这样的声明帮助我们在使用时确保类的正确性。 总结来说,Dart 中的支持类的协变和逆变,这样可以更灵活、更安全地使用变通过使用通配符、extends 和 super 关键字来表示,使得的赋值更加灵活,能够满足不同的业务需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值