Dart 中如何定义泛型类?

推荐答案

在 Dart 中,可以通过在类名后使用尖括号 <T> 来定义泛型类。T 是一个类型参数,可以在类中使用它来表示任意类型。

-- -------------------- ---- -------
----- ------ -
  - ------

  ----------------

  - ---------- -
    ------ ------
  -
-

在这个例子中,Box 是一个泛型类,T 是一个类型参数。你可以使用 Box<int>Box<String> 等来创建不同类型的 Box 实例。

本题详细解读

1. 泛型类的基本语法

在 Dart 中,泛型类的基本语法是在类名后使用尖括号 <T>,其中 T 是一个类型参数。这个类型参数可以在类的成员变量、方法参数和返回值中使用。

-- -------------------- ---- -------
----- ------ -
  - ------

  ----------------

  - ---------- -
    ------ ------
  -
-

2. 使用泛型类

你可以通过指定具体的类型来实例化泛型类。例如:

在这个例子中,Box<int>Box<String> 分别表示存储 intString 类型的 Box 实例。

3. 泛型类的类型推断

Dart 支持类型推断,因此在某些情况下,你可以省略类型参数,Dart 会根据上下文自动推断出类型。

4. 泛型类的约束

你可以通过 extends 关键字对泛型类型参数进行约束,限制它可以接受的类型。

-- -------------------- ---- -------
----- ----------- ------- ---- -
  - ------

  ----------------------

  - ---------- -
    ------ ------
  -
-

在这个例子中,NumberBox 只能接受 num 类型或其子类型(如 intdouble)作为类型参数。

5. 泛型类的多类型参数

Dart 支持多个类型参数的泛型类,只需在尖括号中列出多个类型参数即可。

-- -------------------- ---- -------
----- ------- -- -
  - ------
  - -------

  ---------------- -------------

  - ---------- -
    ------ ------
  -

  - ----------- -
    ------ -------
  -
-

在这个例子中,Pair 类有两个类型参数 TU,分别表示第一个和第二个值的类型。

纠错
反馈