Dart面试题更新 2026-08-05

请解释 Dart 中泛型的作用,并说明如何通过约束限制泛型参数的类型范围。

技术原理Dart

考察说明

考查对 Dart 泛型机制及类型约束语法的理解。

回答思路

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