Что такое Object в Dart?

«Что такое Object в Dart?» — вопрос из категории Dart Core, который задают на 52% собеседований Flutter Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Dart Object — это корневой класс всей иерархии типов. Все типы, включая встроенные (int, String, bool) и пользовательские классы, неявно наследуются от Object.

Ключевые особенности:

  • Универсальный тип: Переменная типа Object может хранить значение любого типа.
  • Базовые методы: Все объекты имеют методы toString(), hashCode, runtimeType и noSuchMethod().
  • Приведение типов: Для доступа к специфичным методам требуется явное приведение с помощью оператора as или проверка через is.

Пример использования:

void main() {
  // Object может хранить любой тип
  Object value = 42; // int
  value = 'Hello Dart'; // String
  value = [1, 2, 3]; // List<int>

  // Для работы с конкретным типом нужна проверка
  if (value is List) {
    print('Длина списка: ${value.length}');
  }

  // Или приведение (может выбросить исключение)
  try {
    List<int> list = value as List<int>;
    print(list.first);
  } catch (e) {
    print('Приведение не удалось: $e');
  }
}

Object часто используется в дженериках, когда нужна максимальная гибкость, например, List<Object> может содержать элементы разных типов.