dart - 如果使用泛型的类型相同,如何比较?

标签 dart

假设我有类(class) someClass

class someClass<Generics> {}

someClass<int> a = someClass<int>();
someClass<String> b = someClass<String>();
someClass c = someClass();
如何检查元素 a,b,c是同一类型 (someClass) 吗?
在 Dart 中可以吗?
我尝试使用 runtimeType方法,但类型不同。

最佳答案

实际上与其他语言(如 Java)不同,Dart 在泛型上没有类型删除。这意味着,对象 a , bc在你的例子中不同种类。

如果你

print(a.runtimeType);
print(b.runtimeType);
print(c.runtimeType);`

你会得到
SomeClass<int>
SomeClass<String>
SomeClass<dynamic>

泛型类型在运行时不会被删除。如果要检查是否所有对象都是 SomeClass 类型,你可以使用
print(a is SomeClass);
print(b is SomeClass);
print(c is SomeClass);

这会给你
true
true
true

关于dart - 如果使用泛型的类型相同,如何比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59383308/

相关文章:

android - 如何为iOS强制抖动设备方向

Dart Petitparser 处理 Lisp 代码

flutter - Flutter中的自定义按钮

dart - 自动将html字符串转换为元素

json - Flutter-错误:不允许使用HTTP 405方法

html - 垂直视口(viewport)被赋予无限高度。 RenderBox 未布局 : RenderViewport#34d12 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE

flutter - flutter :父部件重建后,子部件无法重建吗?

dart - 全局脚手架在 flutter 中显示 Snackbar

dart - 为什么此Web-UI代码不起作用?

http - 如何在 flutter 中使用带有 url 编码正文的 http.post 下载文件?