首页 > 解决方案 > 为什么我不能在 Dart 2 中使用泛型类型作为参数?

问题描述

这似乎是允许的

  List<Type> myTypes = List();
  myTypes.add(SomeType);

  List<Type> moreTypes = [int, String];

但这失败了?

  List<Type> myTypes = List();
  myTypes.add(SomeGenericType<int>);

  List<Type> moreTypes = [SomeGenericType<int>, SomeGenericType<String>];

错误信息是:

运算符 '<' 没有为类 'Type' 定义。尝试定义运算符'<'。

我是 Dart 的新手,主要来自 C、C# 背景,所以这似乎令人困惑和不一致。为什么泛型类型与非泛型有任何不同的处理方式?

标签: dart

解决方案


这与这个问题有关:如何获得通用类型?- 但这不是一个真正重复的问题,这就是我在这里复制它的原因。

虽然它没有回答“为什么”,但它给出了“如何”的解决方案:

辅助功能:

Type typeOf<T>() => T;

然后你可以在不需要实例的情况下获得类型:

myTypes.add(typeOf<SomeGenericType<int>>());

推荐阅读