0Pricing
Dart Academy · Урок

Обобщённые классы и методы

Параметризация собственных типов

«Обобщённые классы и методы» — бесплатный урок Dart Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Dart Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Dart Academy содержит 4 уроков всего.

Ваши собственные обобщённые типы

Встроенные типы, такие как List, являются обобщёнными, и Вы тоже можете создавать свои. Параметр типа позволяет Вашему классу адаптироваться к любому типу, который выберет вызывающий код. 🧩

Имя параметра типа

Вы добавляете параметр типа в угловых скобках после имени класса. Буква T — распространённый заполнитель, обозначающий настоящий тип.

class Box<T> {
  T value;
  Box(this.value);
}

Использование T внутри класса

Внутри класса T ведёт себя как любое имя типа. Вы можете использовать его для полей, параметров и возвращаемых значений во всём теле класса.

class Box<T> {
  T value;
  Box(this.value);
  T get() => value;
}

Подстановка типа

При создании объекта Вы выбираете настоящий тип. Здесь T становится int, поэтому этот контейнер может содержать только целые числа.

var b = Box<int>(42);
int n = b.get();

Позвольте Dart вывести тип

Часто явный тип можно не указывать, поскольку Dart считывает его из аргумента. Вывод типа видит String и сам задаёт T.

var b = Box('hi');

Несколько параметров типа

Класс может принимать больше одного параметра типа, разделённого запятыми. Класс Pair, содержащий значения двух разных типов, — классический пример.

class Pair<A, B> {
  A first;
  B second;
  Pair(this.first, this.second);
}

Обобщённые методы

Вы также можете сделать обобщённым один метод, даже если сам класс не является обобщённым. Поместите параметр типа непосредственно перед списком параметров.

T firstOf<T>(List<T> items) => items[0];

Методы тоже выводят тип

Обобщённый метод обычно выводит свой тип из переданных аргументов. Вызовите его как обычно, а Dart определит остальное.

var n = firstOf([1, 2, 3]);
var s = firstOf(['a', 'b']);

Безопасность типов возвращается

Поскольку метод отслеживает T, результат сохраняет правильный тип. Вызов firstOf для списка String возвращает String, и приводить тип не нужно.

String x = firstOf(['a', 'b']);

Повторное использование без дублирования

Одно обобщённое определение заменяет множество скопированных вариантов. Вы пишете логику один раз, и она одинаково работает с int, String и любым пользовательским типом.

Выбирайте понятные имена

Однобуквенные имена вроде T, E или K являются общепринятыми, но описательное имя может помочь. В сложном коде ясность важнее краткости.

Быстрая проверка

Где у класса указывается параметр типа?

Итоги

Вы научились добавлять параметр типа, например T, в собственные классы и методы. Dart подставляет его, часто с помощью вывода типа, сохраняя код повторно используемым и безопасным. ✅

Часто задаваемые вопросы

Урок «Обобщённые классы и методы» бесплатный?

Да — полный текст урока «Обобщённые классы и методы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Dart Academy, подпишись на CoddyKit PRO. Курс Dart Academy содержит 4 уроков всего.

Чему я научусь в уроке «Обобщённые классы и методы»?

Параметризация собственных типов Ты практикуешь Dart Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Dart Academy?

Предыдущий опыт не требуется. Dart Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Обобщённые классы и методы»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Dart Academy?

Да. Каждый урок Dart Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Почему обобщения лучше dynamic
  2. Обобщённые классы и методы
  3. Ограниченные параметры типов с extends
  4. Обобщённые коллекции на практике
← Назад к Dart Academy