Как определить, является ли объект экземпляром класса

Как я могу определить, принадлежит ли объект классу или нет на языке дартс?

Я хочу сделать что-то вроде следующего:

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