首页 > 解决方案 > 泛型和实际类型之间有什么关系?(镖)

问题描述

在定义基类时,我发现泛型和实际类型有些不同且令人困惑。

如下所示:

当我使用基本类型时,代码运行良好。

void main() {
  var aa = AA.name("11");
  aa.test();
}

class AA<T> {
  T field;

  AA.name(this.field);

  void test() {
    print(field.runtimeType); 
    print(T); 
    print(field.runtimeType == T);  
  }
}

这个结果:

String
String
true

但是当我使用其他类型时,情况会发生变化。

void main() {
  var aa = AA.name(["11"]);
  aa.test();
}

class AA<T> {
  T field;

  AA.name(this.field);

  void test() {
    print(field.runtimeType);
    print(T);
    print(field.runtimeType == T);
  }
}

结果:

List<String>
List<String>
false

两者都是 List < String > 类型。为什么对应的类型不一样?

标签: genericsflutterdart

解决方案


尝试更改此行

print(field.runtimeType == T);

print(field.runtimeType.toString() == T.toString());

它将返回 true。


推荐阅读