Dart 如何检查类型参考-省道

Dart 如何检查类型参考-省道,dart,Dart,如果我有这样一个对象: class MyClass<K>{... 但就我而言,这不起作用: (K is Object) // awalys false 你想要==在这里。使用is用于比较变量的类型,而不是文本类型 如果使用K==Object,这将只检查K是否实际上是Object。例如,如果将K作为int传递,它将不会被视为对象我建议不要使用=来比较类型对象。它只检查完全相等,这在少数情况下可能很有用,但在很多情况下,您确实需要检查子类型 您可以使用以下帮助器函数获取该子类型检查:

如果我有这样一个对象:

class MyClass<K>{...
但就我而言,这不起作用:

(K is Object) // awalys false

你想要
==
在这里。使用
is
用于比较变量的类型,而不是文本类型

如果使用
K==Object
,这将只检查
K
是否实际上是
Object
。例如,如果将
K
作为
int
传递,它将不会被视为
对象

我建议不要使用
=
来比较
类型
对象。它只检查完全相等,这在少数情况下可能很有用,但在很多情况下,您确实需要检查子类型

您可以使用以下帮助器函数获取该子类型检查:

bool isSubtype()=>[]是列表;
然后,您可以检查
isSubtype
以检查
K
是否是
对象的子类型(除了
Null
和等价于
Object?
的类型之外,其他所有类型都是如此,但也可以像
Null is!K
一样进行检查),或
isSubtype
检查
K
是否为
对象的超类型

它的优点是可以与任何类型进行比较,而不仅仅是可以为其编写文本的类型。例如
K==List
仅适用于
List
。如果需要检查
K
是否为
列表
,可以执行
isSubtype


通过在两个方向上执行
isSubtype
,您可以获得类型(相互子类型)的等价性,而不需要它们是相同的类型。例如
isSubtype()
isSubtype()
都是真的,但是如果
K
Object?
那么
K==dynamic
是假的。

很好用,tk。不像我以前没有想到的那样
(K is Object) // awalys false