美文网首页
Dart学习笔记07-泛型

Dart学习笔记07-泛型

作者: zombie | 来源:发表于2020-08-17 14:01 被阅读0次

在 API 文档中你会发现基础数组类型 List 的实际类型是 List<E> 。 <…> 符号将 List 标记为 泛型 类型。 这种类型具有形式化的参数。 通常情况下,使用一个字母来代表类型参数, 例如 E, T, S, K, 和 V 等。
使用泛型的好处:可以提高代码质量 可以减少重复的代码

1.List和Map的泛型

  • List使用时的泛型写法:
var name1 = ['wang', 'liu', 'zhao', 111];
print(name1.runtimeType); // List<Object>
// 限制类型
var name2 = <String>['wang', 'liu', 'zhao'];
List<String> name3 = ['wang', 'liu', 'zhao'];
print(name2.runtimeType); // List<String>
print(name3.runtimeType); // List<String>
  • Map使用时的泛型写法
var info1 = {1: 'one', 'name': 'wang', 'age': 18};
print(info1.runtimeType); // _InternalLinkedHashMap<Object, Object>
var info2 = <String, String>{'name': 'wang'};
Map<String, String> info3 = {'name': 'wang'};
print(info2.runtimeType); // _InternalLinkedHashMap<String, String>
print(info3.runtimeType); // _InternalLinkedHashMap<String, String>

2.类定义的泛型

  • 当定义一个类时不确定属性的类型时,这时可以使用泛型
    代码示例:
class Location1<T> {
  T x;
  T y;

  Location1(this.x, this.y);
}

Location1 l1 = Location1<int>(10, 20);
print(l1.x.runtimeType); // int

Location1 l2 = Location1<String>('aaa', 'bbb');
print(l2.x.runtimeType); // String

希望类型只能是num类型时:

class Location2<T extends num> {
  T x;
  T y;

  Location2(this.x, this.y);
}

Location2 l4 = Location2<int>(10, 20);
print(l4.x.runtimeType); // int

// 错误的写法, 类型必须继承自num
// Location2 l4 = Location2<String>('aaa', 'bbb');
// print(l4.x.runtimeType);

3.泛型方法的定义

T getFirst<T>(List<T> ts) {
  return ts[0];
}

var names = ['wang', 'liu'];
var first = getFirst(names);
print('$first ${first.runtimeType}'); // wang String

相关文章

  • Dart学习笔记07-泛型

    在 API 文档中你会发现基础数组类型 List 的实际类型是 List 。 <…> 符号将 List 标记...

  • Dart学习-泛型

    如果在API文档上查看基本数组类型List,你会发现该类型实际上是List ,其中<...>注解标记这次集合...

  • Dart 笔记 11 - 泛型

    泛型类 List 和 Map 字面量可以被参数化。参数化字面量就是在字面量的开始括号之前添加 (对于 ...

  • Dart 泛型

    解决类、接口、方法的复用性以及对不特定数据类型的支持(类型校验) 这种输出指定的类型,可以使用泛型解决 字母 T ...

  • dart语言学习笔记-4

    泛型 Dart的泛型会一直保留到运行时 Libraries & visibility import和library...

  • Dart 泛型 泛型类 泛型接口

    视频地址https://www.bilibili.com/video/av52490605?p=13 泛型就是解决...

  • Dart基础(八)-泛型

    1.简介:   Dart语言是强类型语言,强类型语言都支持泛型Generics。那么什么是泛型呢?泛型是指代码在使...

  • Kotlin for android学习六:泛型

    前言 kotlin官网和kotlin教程学习教程的笔记。 1. 声明泛型 2. 泛型约束 : 对泛型的类型上限进行...

  • Dart 泛型 泛型方法 泛型类 泛型接口

    通俗理解:泛型就是解决 类 接口 方法的复用性、以及对不特定数据类型的支持(类型校验) 1.定义一个泛型,泛型方法...

  • 带你Dart带你Diao之泛型

    泛型学过Java的都应该比较熟悉了,Dart的泛型和Java泛型的核心理念都差不多,在使用中略有不同。 1.使用泛...

网友评论

      本文标题:Dart学习笔记07-泛型

      本文链接:https://www.haomeiwen.com/subject/gbeuohtx.html