如何判断对象是否是类的实例

时间:2012-10-14 06:34:19

标签: class dart dart-mirrors

如何使用Dart语言确定某个对象是否属于某个类?

我希望做以下事情:

if (someObject.class.toString() == "Num") {
    ...
}

返回值类型是什么?它必须是一个字符串吗?


镜像库一直在上下,现在似乎很快就会发生变化,因为我发现的一件事根本就没有显示出来。

3 个答案:

答案 0 :(得分:38)

最近Object获得runtimeType获取者。所以,现在我们不仅可以将对象类型与另一种类型进行比较,而且还可以获得对象的类名。 如:

myObject.runtimeType.toString()

此外,在当前版本的Dart中,您现在可以跳过toString操作并直接将runtimeType对象与目标类型进行比较,如

myObject.runtimeType == int

myObject.runtimeType == Animal

答案 1 :(得分:24)

  • 使用isis!运算符,如下所示:

    if (someObject is T)
    

    来自documentation

      

    isis!运算符可以方便地检查类型。的结果   如果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')