问题
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
andis!
operators, like this:if (someObject is T)
From the documentation:
The
is
andis!
operators are handy for checking types. The result ofobj is T
is true ifobj
implements the interface specified byT
. 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