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