Как определить класс объекта в 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