在定义基类时,我发现泛型和实际类型有些不同并且令人困惑。
类似以下内容:
当我使用基本类型时,代码运行良好。
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
都是列表
答案 0 :(得分:0)
尝试更改此行
print(field.runtimeType == T);
到
print(field.runtimeType.toString() == T.toString());
它将返回true。