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