オブジェクトがDart言語のクラスであるかどうかを判断するにはどうすればよいですか?
私は次のようなことをしたいと思っています:
if (someObject.class.toString() == "Num") {
...
}
そして、戻り値の型は何ですか?文字列である必要がありますか?
ミラーライブラリは上下していて、現在急速に変化しているようです。私が見つけた1つのことは、示されているように機能しなかったためです。
次のように、is
およびis!
演算子を使用します。
if (someObject is T)
ドキュメント から:
is
およびis!
演算子は、タイプをチェックするのに便利です。obj
がT
で指定されたインターフェースを実装している場合、obj is T
の結果はtrueです。たとえば、obj is Object
は常にtrueです。
Mirrors API の使用( この例 を参照):
Expect.equals('T', someObject.simpleName)
最近、Object
はruntimeType
ゲッターを取得しました。したがって、オブジェクトのタイプを別のタイプと比較するだけでなく、実際にオブジェクトのクラス名を取得できます。のように:
myObject.runtimeType.toString()
さらに、現在のバージョンのDartでは、toString
操作をスキップして、次のようにオブジェクトのruntimeType
をターゲットタイプと直接比較できます。
myObject.runtimeType == int
または
myObject.runtimeType == Animal