Сырые типы - Generics #1 - Advanced Java

แชร์
ฝัง
  • เผยแพร่เมื่อ 29 ธ.ค. 2024

ความคิดเห็น • 31

  • @java-tkach
    @java-tkach  2 ปีที่แล้ว +3

    Сбор средств для помощи ЗСУ 🇺🇦 Слава Україні! 🇺🇦
    www.yuriytkach.com/volunteer

  • @Poriks
    @Poriks ปีที่แล้ว

    Сколько же я уже перечитал, никак не мог разобраться с этими сырыми типами и стиранием типов, а тут за 15 минут повторил что же вообще такое джинерики и зачем они, да еще и наконец понял смысл всего этого. Спасибо огромное за потрясающий материал!

  • @AndrewMalyhin
    @AndrewMalyhin 11 ปีที่แล้ว +1

    Никогда не скучно смотреть Ваши видео, а с небольшими quizes вообще на ура заходит!

  • @sergentum
    @sergentum 7 ปีที่แล้ว +14

    Спасибо за нормальный монтаж! Бережете время смотрящего, и результат без воды и лишних задержек

  • @deathangel908
    @deathangel908 11 ปีที่แล้ว +2

    Классный пример на 12ой минуте! Мой мозг сломан!

  • @alexterev4500
    @alexterev4500 11 ปีที่แล้ว

    Спасибо большое! Короткие ролики - самое то!!!

  • @ГордейИванов-п4р
    @ГордейИванов-п4р 11 ปีที่แล้ว

    Юрий, огромное спасибо за лекции!!!

  • @linuxedhorse
    @linuxedhorse 10 ปีที่แล้ว +5

    Странно, но я перепечатал код с 8:08 и у меня нету никаких Warning. Почему так?
    А в 12:00 так вообще я не могу написать такой код, IDE не дает скомпилировать, дает ошибку на `SomeType.test(list);`, предлагает сменить входной во второй test тип с Integer на String. ЧЯДНТ?

  • @tolikpod
    @tolikpod 5 ปีที่แล้ว +2

    с 8:30 до 8:30 речь меня просто ввела в кому.. транскрипт:
    "тот факт, что мы как бы его переназначили... ссылки... компилятору пофиг, потому что.... почему? в рантайме информация вся стерлась. В рантайме вся дженерик информация она стирается, то есть, кмопилятор, он проверил, все хорошо, все совпадает, rawList может принимать восьмерку, он ее назначил и ОК, а в райнтайме никаких проверок в принципе не происходит, потому что лист есть лист, он может принимать объекты и ему все хорошо"
    попробую переозвучить, так, как это было бы идеально для меня лично:
    "несмотря на то, что теперь rawList ссылается на объект ArrayList с дженериком, не мешает компилятору "одобрить" добавление Integer'а в лист, потому что во время операции добавления .add() компилятор проверяет наличие дженерика ТОЛЬКО у ссылки, но не у объекта, на который она ссылается, соотв-но т.к. у rawList дженерика нет, СЧИТАЕТСЯ что она ссылается на список объектов. Во время рантайма треугльные скобки у ArrayList как бы стираются и на самом деле в куче лежит всегда объект ArrayList одинаковый для всех типов ссылок будь-то List, List и т.д. То есть то, ЧТО ПРЕДПОЛАГАЕТСЯ хранить в этом листе описывает только ссылка"

  • @SergiiVdovareize
    @SergiiVdovareize 10 ปีที่แล้ว +12

    Очень хорошие лекции. В плане улучшения видео я посоветовал бы вам использовать микрофон. На плохих колонках, наушниках и на мобильных устройствах эхо и другие звуки аудитории довольно сильно портят восприятие.

  • @НиколайТкачев-ъ6м
    @НиколайТкачев-ъ6м 10 ปีที่แล้ว +2

    Петро Костур
    5 месяцев назад
    Спасибо! но у меня есть одно замечание: если выполнить пример с кадра на минуте 12:23, то у меня нету никакого ClassCastException. Без проблем вызывается первый метод test.
    и у меня нет никакого эксепшена.

    • @НиколайТкачев-ъ6м
      @НиколайТкачев-ъ6м 10 ปีที่แล้ว

      всмысле он случится только тогда, когда пойдём по циклу

  • @m0rtis248
    @m0rtis248 6 ปีที่แล้ว +1

    Молодец! Спасибо!

  • @java-tkach
    @java-tkach  11 ปีที่แล้ว

    Есть. Но они будут доступны чуть позже

  • @maksimus.ssirotkin1124
    @maksimus.ssirotkin1124 4 ปีที่แล้ว +1

    Спасибо

  • @mohamedkhalil7554
    @mohamedkhalil7554 6 ปีที่แล้ว

    если у нас есть класс Human из которого наследуються класс Student и Teacher, и из Student наследуется класс Graduate.
    Human

  • @DmytroBabichev
    @DmytroBabichev 8 ปีที่แล้ว

    Не совсем понял на каком основании компилятор вызывает первый метод test во втором случае, если в рантайме все равно нет никакой информации о дженериках?

    • @java-tkach
      @java-tkach  8 ปีที่แล้ว +1

      Информация о том, какой метод вызвать, была получена во время компиляции.

    • @DmytroBabichev
      @DmytroBabichev 8 ปีที่แล้ว

      Логично. Спасибо =)

  • @petruwka1
    @petruwka1 11 ปีที่แล้ว

    Спасибо!
    но у меня есть одно замечание: если выполнить пример с кадра на минуте 12:23, то у меня нету никакого ClassCastException. Без проблем вызывается первый метод test.

  • @МаксимКрутой-я3с
    @МаксимКрутой-я3с 9 ปีที่แล้ว +3

    Вы говорите, что в рантайме можно узнать реальный тип, но ведь это неправда. С помощью рефлексии можно узнать только "ваши" названия типов (T, E, K etc), а подставляемый тип вам не узнать. Т.к. в Jave есть механизм стирания до первого ограничения. Почитайте Эккеля.

    • @АлексейМельников-с8ы
      @АлексейМельников-с8ы 7 ปีที่แล้ว +1

      Я дума имеется ввиду тип объекта который мы получаем с помощью get(), а не дженерик

  • @emptinessForThem
    @emptinessForThem 6 ปีที่แล้ว

    Прикол в том, что если в первом и во втором test поменять местами Collection и List, то все без проблем сработает.
    То есть компилятор читает все-таки сигнатуру полностью (а параметры туда входят, в сигнатуру метода то есть) и если видит где-то более полное совпадение, то тот test и берет.
    Получается, что если у нас будет
    public void test (List list) и public void test (Collection) то без проблем компилятор закинет list именно в первый test

  • @java-tkach
    @java-tkach  11 ปีที่แล้ว

    Проверь внимательно написание своего кода. Скорее всего ты объявил класс SomeType без обобщения T:
    class SomeType {...}
    У меня же в примере класс объявлен следующим образом:
    class SomeType /T/ {...}

  • @java-tkach
    @java-tkach  11 ปีที่แล้ว +1

    Битте :)

  • @Unconvinient
    @Unconvinient 4 ปีที่แล้ว

    эти штучки ( скобки ) называются diamond.

  • @mangust397
    @mangust397 3 ปีที่แล้ว

    Чёрт, я реально становлюсь умнее после этих лекций

  • @whatever20271
    @whatever20271 11 ปีที่แล้ว

    Данке

  • @MyChannel-vp9mt
    @MyChannel-vp9mt 5 ปีที่แล้ว

    Как всегда качество звука хреновое у него

  • @LAZIO14
    @LAZIO14 ปีที่แล้ว

    Слава Украине

    • @java-tkach
      @java-tkach  ปีที่แล้ว +1

      Героям Слава!