dart - 为什么我不能在 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# 背景,所以这似乎令人困惑和不一致。为什么泛型类型与非泛型有任何不同的处理方式?
解决方案
这与这个问题有关:如何获得通用类型?- 但这不是一个真正重复的问题,这就是我在这里复制它的原因。
虽然它没有回答“为什么”,但它给出了“如何”的解决方案:
辅助功能:
Type typeOf<T>() => T;
然后你可以在不需要实例的情况下获得类型:
myTypes.add(typeOf<SomeGenericType<int>>());
推荐阅读
- swift - Swift Realm:添加具有相同主键的新对象时如何处理错误?
- c# - C# OrderBy 和 ThenBy 的高级使用
- mkdocs - 如何阻止 material-mkdocs 修剪 inlineCodeBlock 空白?
- android - Flutter 不在命令提示符下在附加设备上运行应用程序,而 android studio 已关闭(仅在 android studio 中运行)
- ruby-on-rails - 具有多态关联的数据库设计和 ActiveRecord 查询
- reactjs - 如何确保在显示另一个组件之前加载 App 组件
- javascript - Moment.js - 如何获取给定月份的每周数据[每周的开始日期和结束日期],不包括上个月和下个月的日期
- python - 在循环中写入文件只写入一次
- python - Selenium / Python:为什么所有检测到的元素在y:1或y:0的y位置都有坐标?
- c++ - 正确重用联合成员的存储并转换所涉及的指针(对象池)