JavaRush
AI Academy
new
Акція
Університет
Java FullStack
Python FullStack
AI Native Developer
new
Навчання
Курси
Задачі
Опитування
Ігри
Допомога
Графік стусанів
Стажування
Спільнота
Користувачі
Форум
Чат
Статті
Історії успіху
Дії
Відгуки
Передплати
Світла тема

Лекції

  • Відгуки
  • Про нас
  • CS50
Почати
Почати навчання
Почати навчання
  • Моє навчання
  • Курси
  • Університет
  • Карта квестів
  • Лекції
  • Підтипність і generics: чому List «піднімається», а MutableList — ні

    Kotlin SELF
    36 рівень, 0 лекція
    Розбираємося, як у Kotlin працює підтипність в узагальнених типах: чому List<Expense> можна безпечно використовувати як List<Transaction>, але MutableList<Expense> не можна «підняти» до MutableList<Transaction>. На прикладах показуємо інваріантність контейнерів ( Box<T>), коваріантність read-only колекцій, помилки компілятора та практичні прийоми проєктування API (приймати List, якщо не потрібно мутувати), а також інтуїцію на прикладі типів функцій (Transaction) -> String.
    Відкрита
  • Variance у місці оголошення: out і in у власних узагальнених типах

    Kotlin SELF
    36 рівень, 1 лекція
    Розбираємо declaration-site variance у Kotlin: як оголошувати коваріантні producer-типи через out і контраваріантні consumer-типи через in, чому компілятор забороняє небезпечні операції (наприклад, var із параметром типу) та як це повʼязано зі звичними типами на кшталт List, Comparable і функціональними типами (A) -> B. Наприкінці — прикладний рефакторинг (джерело звіту + принтер) і перелік типових помилок проєктування.
    Відкрита
  • Проєкції типів: безпечні Array<out/in> і проєкції для MutableList

    Kotlin SELF
    36 рівень, 2 лекція
    Розбираємося, чому Array<T> у Kotlin інваріантний, чим небезпечні приведення через as і як use-site variance (проєкції типів) «урізає» API посилання до безпечного режиму: out для читання (producer) і in для запису (consumer). Закріплюємо це на прикладах копіювання масивів і контрактів для MutableList — зокрема на практичному сценарії з фінансовими операціями.
    Відкрита
  • Star-projection *: List<*>

    Kotlin SELF
    36 рівень, 3 лекція
    Розбираємо star-projection * у Kotlin на прикладі List<*> і MutableList<*>. Зʼясуємо, що на практиці означає «невідомий тип», чому під час читання елементи мають тип Any?, а запис у MutableList<*> заборонено (логіка на кшталт in Nothing). Також розглянемо, як застосовувати перевірки is List<*> і як зірочка співвідноситься з проєкціями out/ in. Наприкінці — практичні приклади й типові помилки.
    Відкрита
  • Type erasure та inline/reified: перевірки is T, as? T і T::class

    Kotlin SELF
    36 рівень, 4 лекція
    Розбираємося, чому на JVM «стираються» узагальнені типи ( type erasure), через що заборонені перевірки на кшталт is T і List < Int >, і як легально робити перевірки та приведення через inline + reified. На практиці пишемо універсальні утиліти з as?, використовуємо T::class для повідомлень і збираємо елементи потрібного типу зі List < Any >.
    Відкрита
Навчання
  • Курси програмування
  • Реєстрація
  • Курс Java
  • Допомога із задачами
  • Ціни
Спільнота
  • Користувачі
  • Статті
  • Форум
  • Чат
  • Історії успіху
  • Дії
Компанія
  • Про нас
  • Контакти
  • Відгуки
  • FAQ
  • Підтримка
JavaRush JavaRush — це інтерактивний онлайн-курс вивчення Java-програмування з нуля. Він містить 1200 практичних задач із перевіркою розв'язання одним клацанням, необхідний мінімум знань із теоретичних основ Java, а ще мотивувальні «фішки», які допоможуть пройти курс до кінця: ігри, опитування, цікаві проєкти й статті про ефективне навчання та кар'єру Java‑девелопера.
Підписуйтесь
Мова інтерфейсу
Русский English
Українська
Програмістами не народжуються © 2026 JavaRush
MastercardVisa
Програмістами не народжуються © 2026 JavaRush