How to tell if an object is an instance of a class

大憨熊 提交于 2019-12-03 10:52:24

问题


How can I determine whether an object is of a class or not in the Dart language?

I'm looking to do something like the following:

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

And what is the returned value type? Will it have to be a String?


The mirror library has been up and down and seems to be subject to rapid change right now, as the one thing I did find simply did not work as shown.


回答1:


  • By using the is and is! operators, like this:

    if (someObject is T)
    

    From the documentation:

    The is and is! operators are handy for checking types. The result of obj is T is true if obj implements the interface specified by T. For example, obj is Object is always true.

  • Using the Mirrors API (see this example):

    Expect.equals('T', someObject.simpleName)
    



回答2:


Recently Object got runtimeType getter. So, now we may not only compare type of object with another type, but actually get the class name of an object. As in:

myObject.runtimeType.toString()

Furthermore, in the current version of Dart, you can now skip toString operation and directly compare runtimeType of object with target type as in

myObject.runtimeType == int

or

myObject.runtimeType == Animal


来源:https://stackoverflow.com/questions/12879877/how-to-tell-if-an-object-is-an-instance-of-a-class

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!