Как определить класс объекта в Dart?
Как определить тип (имя класса) объекта на языке Dart?
Я хочу сделать что-то вроде следующего:
if (someObject.class.toString() == "Num") {
...
}
и каков тип возвращаемого значения? Это должна быть нить?
зеркальная библиотека была вверх и вниз и, похоже, подвержена быстрым изменениям прямо сейчас, так как одна вещь, которую я нашел, просто не работала, как показано.
2 ответов
-
С помощью
is
иis!
операторы, как это:if (someObject is T)
С документация:
на
is
иis!
операторы очень удобны для проверки типов. Результатobj is T
true, еслиobj
реализует интерфейс, указанныйT
. Для пример,obj is Object
всегда истинно. -
С помощью зеркала API (см. этот пример):
Expect.equals('T', someObject.simpleName)
недавно Object
получил runtimeType
геттер. Итак, теперь мы можем не только сравнить тип объекта с другим типом, но и фактически получить имя класса объекта.
Как в:
myObject.runtimeType.toString()
кроме того, в текущей версии Dart, вы можете пропустить toString
операция и непосредственно сравнить runtimeType
объекта с целевым типом, как в
myObject.runtimeType == int
или
myObject.runtimeType == Animal