web-dev-qa-db-ja.com

オブジェクトがクラスのインスタンスかどうかを確認する方法

オブジェクトがDart言語のクラスであるかどうかを判断するにはどうすればよいですか?

私は次のようなことをしたいと思っています:

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

そして、戻り値の型は何ですか?文字列である必要がありますか?


ミラーライブラリは上下していて、現在急速に変化しているようです。私が見つけた1つのことは、示されているように機能しなかったためです。

26
george koller
  • 次のように、isおよびis!演算子を使用します。

    if (someObject is T)
    

    ドキュメント から:

    isおよびis!演算子は、タイプをチェックするのに便利です。 objTで指定されたインターフェースを実装している場合、obj is Tの結果はtrueです。たとえば、obj is Objectは常にtrueです。

  • Mirrors API の使用( この例 を参照):

    Expect.equals('T', someObject.simpleName)
    
25
Eliran Malka

最近、ObjectruntimeTypeゲッターを取得しました。したがって、オブジェクトのタイプを別のタイプと比較するだけでなく、実際にオブジェクトのクラス名を取得できます。のように:

myObject.runtimeType.toString()

さらに、現在のバージョンのDartでは、toString操作をスキップして、次のようにオブジェクトのruntimeTypeをターゲットタイプと直接比較できます。

myObject.runtimeType == int

または

myObject.runtimeType == Animal
41
Vadim Tsushko