泛型和实际类型之间有什么关系? (镖)

时间:2019-06-06 02:58:53

标签: generics flutter dart

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

类似以下内容:

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

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

都是列表类型。为什么对应的类型不同?

1 个答案:

答案 0 :(得分:0)

尝试更改此行

print(field.runtimeType == T);

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

它将返回true。