如何使用Dart语言确定某个对象是否属于某个类?
我希望做以下事情:
if (someObject.class.toString() == "Num") {
...
}
返回值类型是什么?它必须是一个字符串吗?
镜像库一直在上下,现在似乎很快就会发生变化,因为我发现的一件事根本就没有显示出来。
答案 0 :(得分:38)
最近Object
获得runtimeType
获取者。所以,现在我们不仅可以将对象类型与另一种类型进行比较,而且还可以获得对象的类名。
如:
myObject.runtimeType.toString()
此外,在当前版本的Dart中,您现在可以跳过toString
操作并直接将runtimeType
对象与目标类型进行比较,如
myObject.runtimeType == int
或
myObject.runtimeType == Animal
答案 1 :(得分:24)
使用is
和is!
运算符,如下所示:
if (someObject is T)
is
和is!
运算符可以方便地检查类型。的结果 如果obj is T
实现obj
指定的接口,则T
为真。对于 例如,obj is Object
始终为真。
使用Mirrors API(请参阅this example):
Expect.equals('T', someObject.simpleName)
答案 2 :(得分:0)
这是带有解决方案的简单说明。
您有:
Object obj =t1
;
其中t1
是T类的对象。
还有另一个名为t
的对象T。
T t = new T()
;
如何检查obj
是否与t
类型相同?
解决方案:
if(obj is t)
print('obj is typeof t')
else print('obj is not typeof t')