如果我尝试将一个带有泛型的类型赋给Type变量,我会收到一个错误,但如果我使用一个runtimeType变量,一切正常。
Type t = List;
//Type t1 = List<int>; // ERROR !!!
Type t2 = new List<int>().runtimeType;
print('$t $t2'); //> List List<int>
这是一个错误还是我没有得到什么?
答案 0 :(得分:1)
你的第一行令人惊讶,但是,是的,它有效。类文字的类型为&#34; Type&#34;:
print((List).runtimeType);
--> TypeImpl
print(List is Type);
--> true
你的代码片段的其余部分的问题正是你在github上找到的问题:
https://github.com/dart-lang/sdk/issues/11923
- 该类文字不能使用泛型。您必须获取一个实例并使用runtimeType来获取您想要的类型。
答案 1 :(得分:0)
Type
不是您可以成为任何其他课程的班级。它是对象的runtimeType
属性的类型。它用于推断对象的类型。
Type t = List;
Dos并没有神奇地将t
的类型设为List
;
Type t = List<int>;
这会尝试将List<int>
分配给Type
类型的变量,从而导致错误。
也许有些混乱源于:
print(t);
打印List
,但这实际上是打印t.toString()
,它返回字符串'List'。