40

在 Dart 语言中,如何确定一个对象是否属于某个类?

我正在寻找类似以下的事情:

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

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


镜像库一直在上下波动,现在似乎正在快速变化,因为我发现的一件事根本没有如图所示。

4

3 回答 3

54

最近Object得到了runtimeType吸气剂。所以现在,我们不仅可以将对象的类型与另一种类型进行比较,还可以实际获取对象的类名

如:

myObject.runtimeType.toString()

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

myObject.runtimeType == int

或者

myObject.runtimeType == Animal
于 2012-10-14T10:42:57.157 回答
47
  • 通过使用isandis!运算符,如下所示:

    if (someObject is T)
    

    文档中:

    和运算isis!对于检查类型很方便。如果实现了 指定的接口,则结果 obj is T为真。例如,总是正确的。objTobj is Object

  • 使用Mirrors API(请参阅此示例):

    Expect.equals('T', someObject.simpleName)
    
于 2012-10-14T06:47:07.590 回答
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') 
于 2020-10-15T20:37:31.673 回答