请解释 Dart 中泛型的作用,并说明如何通过约束限制泛型参数的类型范围。
考察说明
考查对 Dart 泛型机制及类型约束语法的理解。
回答思路
- 【回答框架 1】泛型允许在定义类、接口或函数时使用类型参数,实现类型安全的复用。核心作用是提升代码复用性并保持编译期类型检查。
- 【回答框架 2】类型参数可出现在类名后,如 class Box<T>;函数也可定义泛型,如 T foo<T>(T value)。使用时可显式指定具体类型,也可由编译器推断。
- 【回答框架 3】使用约束通过 extends 关键字限制泛型参数必须继承自某类型或实现某接口,例如 T extends num 表示只接受数字类型。这能在泛型内部调用被约束类型的方法。
- 【回答框架 4】约束在集合和算法场景中实用,如 Comparable 排序、数值运算等,保证操作合法。Dart 泛型采用类型擦除的运行时表现,但编译期检查严格。
- 【回答框架 5】回答时可补充用 where 子句或直接 extends 限定,注意与 Java 等语言的差异,但 Dart 目前主要用 extends 实现。约束不影响运行时,仅在编译期校验。
- 【关键点 1】泛型提升编译期类型安全并复用代码。
- 【关键点 2】用 extends 关键字定义类型约束。
- 【关键点 3】约束确保内部可安全调用特定方法。
- 【易错点 1】不要把约束说成是运行时行为,它只影响编译期检查。
- 【易错点 2】不要混淆泛型约束与普通继承,约束仅作用于类型参数。