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

geo*_*ler 23 class dart dart-mirrors

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

我正在寻找以下内容:

if (someObject.class.toString() == "Num") {
    ...
}
Run Code Online (Sandbox Code Playgroud)

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


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

Vad*_*hko 42

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

myObject.runtimeType.toString()
Run Code Online (Sandbox Code Playgroud)

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

myObject.runtimeType == int
Run Code Online (Sandbox Code Playgroud)

要么

myObject.runtimeType == Animal
Run Code Online (Sandbox Code Playgroud)

  • 与“myObject is int”相比有什么优势吗?即使“is”仅实现其他类型,它也会返回 true,这在某些情况下可能不是所需的结果。偶尔有人提到“runtimeType”不可靠,因为它可以被覆盖,并且只能用于调试目的。 (2认同)
  • 我查了一下,我的猜测是对的。您不能将“类型文字”作为函数的参数传递,然后在“is”操作中使用它。所以`isOfType(obj, Type type) => obj is type` 不正确,但`isOfType(obj, Type type) => obj.runtimeType == type` 效果很好 (2认同)
  • 如果你在 web 上使用 dart,缩小到 js 代码将返回缩小值! (2认同)

Eli*_*lka 26