Наследование и расширители обобщений - Generics #2 - Advanced Java

Поділитися
Вставка
  • Опубліковано 6 жов 2024

КОМЕНТАРІ • 32

  • @java-tkach
    @java-tkach  2 роки тому

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

  • @oleksiitumanov2976
    @oleksiitumanov2976 10 років тому +28

    Юрий, отличные лекции! Одни из лучших на русском языке.
    Хочу отметить юмор и "живую" подачу материала. Cпасибо большое!
    P.S. Tема наследования порадовала:
    4:20 "... мы могли засовывать потомков класса String..." )))

  • @chost0
    @chost0 Рік тому +3

    Решил разобраться с дженериками ибо плавал. И вот посмотрел это видео, очень тяжело шло, понял 10% информации, пошел почитал лекцию JavaRush о дженериках, боундед вайлдкардах, типизированных классах и методах и т.д., оттуда перешел на ссылки оракл, там ещё изучил про типизированные классы и методы, перечитал комментарии везде, снова сюда вернулся, смотреть видео на второй раз уже с багажом информации, на второй раз с паузами, перепечатыванием кода, перемотками назад и т.д. я думаю могу сказать, что наконец то я понял, что откуда берётся, зачем нужны Extends и Super, чем отличается Т от ? области видимости параметров и т.д. и вот что мне интересно... на видео лайв съёмка откуда то из аудитории где он что то объясняет студентам в реальном времени... вот есть люди которые реально прослушали лекцию и всё поняли? я не знаю, гении может какие то... мне кажется вот в аудитории слушая лектора усвоить вот так материал просто не возможно... Если конечно ты заранее этот материал не изучил, и не повторяешь его на лекции, для закрепления так сказать.

    • @Частныйсектор-х4я
      @Частныйсектор-х4я Рік тому

      да также, учусь в группе, делал домашние задания по дженерикам, но чувствую что знаний мало, теперь смотрю в ютюбе везде лекции по ним.

    • @fur_mur
      @fur_mur 8 місяців тому

      Если все остальные темы в java нормально понимаешь, то проблем не должно быть. Лектор нормально рассказывает. Особенно хорошо одновременно с лекцией писать этот код у себя в идее и смотреть, что будет. А так, это не начальная тема, не зря в названии "Advanced Java". Если во всех остальных особенностях java плаваешь, то, конечно, будет трудно. Поверьте, в универе так доступно не объясняют, как в этих лекциях.

  • @alexkolokolov
    @alexkolokolov 7 років тому +6

    Возникло 2 вопроса:
    1. Почему бы вместо void copy(List

  • @cyrillcheckout
    @cyrillcheckout 11 років тому +4

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

    • @slavakalinichenko1592
      @slavakalinichenko1592 7 років тому

      она тут не правильно описана

    • @ДмитрийАфоничкин-в8р
      @ДмитрийАфоничкин-в8р 2 роки тому

      @@slavakalinichenko1592 всё правильно описано, вы видимо сами не до конца понимаете

    • @GameForYouOnline
      @GameForYouOnline Рік тому

      @@ДмитрийАфоничкин-в8р на сколько я понимаю, это бронирование, типа места. но пока еще не знаем для кого..

  • @vladimirgaydamakin7155
    @vladimirgaydamakin7155 3 роки тому +2

    отличные лекции

  • @EdwardNorthwind
    @EdwardNorthwind Рік тому

    Метод:
    void copy(List

  • @spinacker16
    @spinacker16 6 років тому +2

    Один из самых каверзных вопросов на собеседовании. К сожалению тут хорошо раскрыта только тема Женериков для классов, но довольно поверхностно говорится о Wildcard. Чтобы понять что такое генерифецированные коллекции и bounded wildcard советую гуглить PECS(Product extends Consumers super).

  • @java-tkach
    @java-tkach  11 років тому +1

    Нет, чаще :) Просто у меня был отпуск, а потом послеотпускная "запара" на работе.

  • @java-tkach
    @java-tkach  11 років тому

    Тоже вариант. Хотя в таком случае Вы не позволяете передать List/Object/ в качестве dest.

  • @borisyatsenko4626
    @borisyatsenko4626 7 років тому

    Простой пример из книги Брюса Эккеля "Философия Java" в котором у автора была ошибка.
    class Fruit {}
    class Orange extends Fruit {}
    class Apple extends Fruit {}
    class Jonathan extends Apple {}
    class Holder{
    private T item;
    void add(T item) {
    this.item = item;
    }
    }
    public class GenericWriting {
    private static void writeExact(Holder list, T elem) {
    list.add(elem);
    }
    public static void main(String[] args) {
    Holder fruits = new Holder();
    writeExact(fruits, new Apple());
    }
    }
    Брюс Экксель утверждает что writeExact(fruits, new Apple()); не должно компилироваться, так как мы типизировали холдер классом Fruit, а пытаемся положить не Fruit а его потомка Apple. Тем не менее это работает. Эта ошибка Брюса Эккеля обсуждалась даже на StackOverflow stackoverflow.com/questions/26747867/is-this-generics-example-from-bruce-eckels-thinking-in-java-wrong
    Пожалуйста, объясните, почему в холдер, жестко типизированный родительским классом компилятор разрешает класть его потомка?

  • @ДмитрийДонской-ы2ж
    @ДмитрийДонской-ы2ж 3 роки тому +1

    Да если б мне так в школе... Доходчиво...

    • @Частныйсектор-х4я
      @Частныйсектор-х4я Рік тому +1

      если бы в школе еще классы были по 10 человек, а не по 30, тогда бы успеваемость кратно выросла. Ну еще и бить палкой за двойки бы разрешить, глядишь дураков поменьше бы стало.

  • @1kvin
    @1kvin 11 років тому

    Ждал долго)

  • @СергейШишлянников-т3л

    У вас ошибка.
    public class Container {
    T item;
    }
    Этот код не скомпилируется, будет ошибка 'java.lang.Comparable' cannot be inherited with different type arguments: 'main.generics.Product' and 'T'

  • @maksimus.ssirotkin1124
    @maksimus.ssirotkin1124 4 роки тому

    Спасибо

  • @sergentum
    @sergentum 7 років тому +2

    я не понял зачем делать void copy(List

    • @gandibaat3637
      @gandibaat3637 6 років тому

      Скорее всего, просто для примера использования super в контексте дженериков.

    • @Igor-hz2gp
      @Igor-hz2gp 5 років тому +2

      это принцип/концепция PECS , связанный с wildcard( )

    • @CentaurisNomadus
      @CentaurisNomadus 3 роки тому

      Вроде он объяснял это тем, то компилятор может здесь увидеть ошибку, так как если например, мы берем списки телефонов или камер, которые наследуют список "продукт", и затем уже попытаемся привести эту копию к списку продукт, то продукт и его наследуемые списки будут различными, и вылезет ошибка. А Обджект это как бы отец и для продукт, и для наследуемых списков. Не знаю, понял ли я это правильно.
      Коротко, продукт видится не одним и тем же, как набор его наследников-списков для компилятора.
      Если есть знатоки, просветите)

  • @ВасилиКарпов
    @ВасилиКарпов 4 роки тому

    List list = new ArrayList();
    List list2 = new ArrayList(list);
    А вот это пройдет )

  • @antonstezhkin5991
    @antonstezhkin5991 4 роки тому +1

    Немножечко взорвало мозг что IN - аргумент предоставляет значения, а в OUT - аргумент идет запись. Почему они называются именно так, а не наоборот?

    • @CentaurisNomadus
      @CentaurisNomadus 3 роки тому +1

      IN - внутренний список, откуда мы передаем элементы к OUT - внешний список. Прямо как источник информации и детектор снаружи.

  • @МаксД-ш3м
    @МаксД-ш3м 2 роки тому

    картина сложилась

  • @Кулинарноеугаралово
    @Кулинарноеугаралово 5 років тому +1

    У стринга разве может быть потомок?

  • @SergeyKobec
    @SergeyKobec 11 років тому

    Раз в месяц ролики теперь будут выходить :D ?