Java для начинающих. Урок 34: Wildcards (Generics)

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

КОМЕНТАРІ • 152

  • @alishevN
    @alishevN  7 років тому +202

    Я в видео немного неясно изъяснился.
    Если мы пишем

    • @АнтонШарафиев
      @АнтонШарафиев 7 років тому +4

      то есть если мы напишем

    • @АнтонШарафиев
      @АнтонШарафиев 7 років тому +8

      Итак, я попробовал такие варианты:
      1.
      private static void test(List

    • @vegaenigma5652
      @vegaenigma5652 6 років тому +5

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

      Vega Enigma
      Наиль же пишет, что подкласс включается!!!!!
      подкласс - это именно из твоего примера

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

      @@АнтонШарафиев запись List уже подразумевает, что List

  • @PanthereosJane
    @PanthereosJane 4 роки тому +15

    Лучшее объяснение азов Wildcard, что я читала/слушала. Теперь можно перечитывать Хорстмана и Эккеля)

  • @БулатКиямов-р1в
    @БулатКиямов-р1в Рік тому +1

    Наиль, все как всегда на высоком уровне! Спасибо!

  • @pochemychka1892
    @pochemychka1892 Рік тому +1

    Спасибо Вам добрый человек за Ваш труд для людей !!!

  • @xqz666
    @xqz666 7 років тому +1

    пожалуй самые содержательные ролики без воды. максимально плотно подана инфа

  • @propython_ru2258
    @propython_ru2258 5 років тому +30

    Ага! Так вот откуда был первый курс :)
    За продвинутую Java Еще раз спасибо, все очень подробно и доходчиво . Курс советую всем кто хочет изучить Java.
    Теперь бы еще курс по практике Java.

    • @alishevN
      @alishevN  5 років тому +4

      Планируется такой.

    • @ИгорьЗубченко-у7щ
      @ИгорьЗубченко-у7щ 2 роки тому

      Где можно практиковаться у вас ?

    • @seinarukiro
      @seinarukiro Рік тому +2

      @@alishevN такс, три года прошло) очень хочется

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

      @@seinarukiro есть марафон, но там не так много заданий и первые 7 дней решаются за 3 часа.

  • @wwetv339
    @wwetv339 4 роки тому +6

    Забыл показать как создавать свои параметризованные классы и методы, а так все хорошо объяснил. Молодец!

  • @klimka1010
    @klimka1010 7 місяців тому

    Очень понятно объяснил, спасибо! В моменте щелкнуло в голове и понял )

  • @oskinnick
    @oskinnick 3 роки тому +5

    Наиль, вы таки Учитель! Так просто и понятно объяснить заумную тему... Спасибо!

  • @kladmonet9
    @kladmonet9 4 роки тому +2

    Благодарю за полезный урок! Учимся дальше!

  • @АлександрПешков-о3ф
    @АлександрПешков-о3ф 6 років тому +2

    Спасибо за видеоуроки , грамотно объясняете!

  • @nailovie4235
    @nailovie4235 7 років тому +1

    private static void test(List list){ /*(List list) - то что подаем в параметр, это получается отдельная новая переменная?
    for (Animal animal: list){ /*И здесь Animal animal: list - animal это тоже новая переменная?
    System.out.println(animal);
    }

    • @Lexoid65
      @Lexoid65 7 років тому +4

      Ну да, это всё локальные переменные. Переменная list, которая параметризует класс Animal, ограничена телом метода test(), а ссылочная переменная animal типа Animal является итерационной переменной, которая обслуживает расширенный цикл for() и используется исключительно в нём.

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

      @@Lexoid65 но что собой означает переменная list, когда задачи цикла for - вывести все значения listOfAllAnimals? По логике ведь должно быть for (Animal animal : listOfAllAnimals). Если в цикл each мы ставим переменную list - for (Animal animal : list), то как Java понимает, что нужно вывести все значения listOfAllAnimals?

    • @bglets1930
      @bglets1930 2 роки тому +1

      @@simonsmirnov5844 у меня точно такой же вопрос возник.Сижу разбираюсь.

    • @АлексейТимошенко-л6и
      @АлексейТимошенко-л6и 2 роки тому +2

      @@bglets1930 Думаю, что java понимает с чем работать по параметру, указанному в скобках при вызове метода test:
      test(listOfAnimal); здесь указан listOfAnimal
      test(listOfDogs); а здесь listOfDogs

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

    Спасибо! Все очень доступно и понятно!

  • @romabulava899
    @romabulava899 5 років тому +2

    на сайтах примеры огромны и глаза рабегаются...тут все просто и компактно

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 2 роки тому

      да, это очень важно в обучении
      часто натолкают в примеры всего подряд

  • @СергейВячеслаев
    @СергейВячеслаев 5 років тому +3

    Спасибо, отлично все рассказал - все понял.

  • @Devivl
    @Devivl 2 роки тому +1

    После просмотра этого видео все встало на свои места. Ничего не запутано, Наиль. Наоборот, очень чётко и ясно объяснил. Спасибо большое !

    • @dmitryykuzin
      @dmitryykuzin Рік тому +1

      Это сарказм? Нагородил в этом видео столько инфы, что я третий день въехать не могу...

  • @vayansalvia
    @vayansalvia 4 роки тому +7

    Ничего не понятно, но очень интересно

  • @ksenii9819
    @ksenii9819 4 роки тому

    это лучший канал по джаве!

  • @15bleach51
    @15bleach51 4 роки тому +6

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

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

    Спасибо! Теперь я понял WIldCards!

  • @korumstar9989
    @korumstar9989 6 років тому +1

    Спасибо за работу!

  • @JesseMunich
    @JesseMunich 2 роки тому

    Ты очень крут! Спасибо!

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

    Дженерики очень хорошо описаны в Rust (разве что сигнатуры писать сложнее), однако и в Java все тоже довольно просто и лаконично.

  • @jjkj8902
    @jjkj8902 7 років тому +9

    Сначала было непонятно на 50%, но как ввел под конец extends все стало понятно 120% ))

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

    Lisr

  • @sergeykovalenko3432
    @sergeykovalenko3432 5 років тому

    Всем привет.
    Начал изучать Java оочень недавно. Прям катастрофически недавно. Вооружился книгой и этими вот видео от Алишева.
    Вроде и понимаю и не понимаю.
    Охота еще и живого общения с теми, кто в теме. Может где-то собираются начинающие джаверы, пьют кофе и разбирают вместе непонятные моменты. Я из Питера. Буду рад знакомству с такими вот людьми.
    PS Спасибо автору за годный контент

    • @arturfn5256
      @arturfn5256 5 років тому

      Прошло пол года. Как успехи, не забросил?

    • @skitt3496
      @skitt3496 4 роки тому

      @@arturfn5256 Сколько раз видел в комментах людей которые спрашивают у других, не забросили ли они, никто ни разу не отвечал... странно

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

      @@skitt3496 перешёл в тестирование, полёт нормальный, месяц тому устроился. Удачи тебе!)

    • @skitt3496
      @skitt3496 4 роки тому

      @@arturfn5256 Красавчик)

    • @mister-ace
      @mister-ace 4 роки тому

      @@arturfn5256 как успехи?)

  • @ЕкатеринаПрудникова-м1у

    Привет! Может кто-то подсказать, почему когда я в массив добавляю объект Dog ListOfAnimal.add(new Dog(5)) при выводе на экран показывается 0 (для Dog сделала конструктор по аналогии с Animal). Спасибо.

    • @ЕкатеринаПрудникова-м1у
      @ЕкатеринаПрудникова-м1у 2 роки тому +2

      изменила конструктор в Dog на public Dog(int id) {super(id);}

    • @java_worm
      @java_worm 2 роки тому

      @@ЕкатеринаПрудникова-м1у Вау.... ты просто космос

    • @java_worm
      @java_worm 2 роки тому

      @@ЕкатеринаПрудникова-м1у но как и почему это сработало? 🧐

    • @АлексейСытник-э9т
      @АлексейСытник-э9т 2 роки тому +1

      @@java_worm вызван конструктор родительского класса, который и заполнил поле

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

    why we cant write just// for( Object animal : list ) {System.out.println(animal); } [ you can answer in russian]

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

    спасибо за видео) про использование с super не знал)

  • @bonefire2725
    @bonefire2725 4 роки тому

    Спасибо за труд!

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

    А класс-дженерик можно создавать так: public MyGenerigs

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

    Странно. Они пишет ListOfAnimals.add(new Animal(id:1)); и у него не подчёркивает красным.

  • @TheBerrington
    @TheBerrington 2 роки тому

    подскажите пожалуйста, почему у нас вызывается toString в методе test? метод for each и toString я по отдельности понял, не почему вызывается toString?

    • @АлексейСытник-э9т
      @АлексейСытник-э9т 2 роки тому

      Где он там вызывается

    • @TheBerrington
      @TheBerrington 2 роки тому

      ​@@АлексейСытник-э9т где именно он вызывается я и хочу понять, но для того, чтобы он не выдал хэшкод, а выдал id мы переопределяем его в классе Animal.

    • @АлексейСытник-э9т
      @АлексейСытник-э9т 2 роки тому +1

      @@TheBerrington он вызывается неявно. Для любого объекта, переданного параметром внутрь print автоматически вызывается его метод toString

    • @TheBerrington
      @TheBerrington 2 роки тому

      @@АлексейСытник-э9т спасибо!

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

    Это все хорошо, но что такое List и ArrayList?

    • @alishevN
      @alishevN  4 роки тому

      ua-cam.com/video/QCjLMw988kQ/v-deo.html

    • @NiflheimForever
      @NiflheimForever 4 роки тому

      @@alishevN О, спасибо за ответ!) Успехов вам!

  • @yuryka5624
    @yuryka5624 5 років тому

    отлично рассказано!

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

    Отлично объяснил!

  • @МаринаШирманова-п8о
    @МаринаШирманова-п8о 5 років тому +4

    Как в IntelliJ IDEA также сделать, чтобы сверху созданные методы высвечивались?

  • @loshonkov
    @loshonkov 2 роки тому +1

    Спасибо.

  • @leshkasamuraj
    @leshkasamuraj Рік тому +6

    Ничего не понял, объяснение очень быстрое, как буд то не для новичков, а для продвинутых кто забыл, постоянное переключение, сложно сосредоточиться.

  • @АнтонФамилия-к2н
    @АнтонФамилия-к2н 2 роки тому +1

    Спасибо, более менее стало понятнее

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

    такой вопрос: в пердыдущих классах разбиралось слово super? я его совсем не помню. или пропустил или переучил)

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

    Для новичка конечно всё запутанно и сложновато.
    Надеюсь, что я не один такой тупой

  • @eateam28
    @eateam28 7 років тому +3

    Хотел спросить где вы учили этот язык? по каким материалам? спасибо

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

    Еще один момент не понял. Когда мы добавляем в лист обьекты. К пртмеру в коде написано дважды
    listOfDogs.add(new Dog()) ;
    listOfDogs.add(new Dog()) ;
    Этим самым у нас в листе создаются два обьекта класса дог, так? Но разве так можно? Как можно создать два экземпляра класса и не присвоить им никаких имен?

    • @АлексейСытник-э9т
      @АлексейСытник-э9т 2 роки тому +1

      Не существует явного требования заполнения полей классов, они просто остаются пустыми

  • @АндрейИщук-ю8к
    @АндрейИщук-ю8к 3 роки тому

    Вопрос: зачем писать во входных параметрах метода test(List

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 2 роки тому +1

      так нужно писать чтобы можно было передать потомков от Animal

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

    Привет! Подскажи пожалуйста. Если взять цикл for each. for(Animal animal : list)
    В данном примере у нас первое слово "Animal" - обозначает тип данных хранящихся внутри листа, верно? Последнее слово "list" определяет обьект который мы передаем в цикл, верно? А что обозначает центральное слово animal? Почему оно с маленькой буквы? У нас это слово с маленькой буквы вообще нигде не применялось в коде. И экземпляра класса Animal по имини animal тоже не создавалось. Так на что указывает центральное слово и зачем оно? Надеюсь понятно изьяснился)

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

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

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 2 роки тому +2

      @@zahark7781 верно
      см Урок 12: Цикл for each

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

    Крайне доступно и полезно, спасибо!

  • @Mcsollo
    @Mcsollo 5 років тому +4

    В других уроках по дженерикам я видел , а не знак вопроса. и это одно и тоже?

    • @dreamer_vi905
      @dreamer_vi905 5 років тому +9

      можно использовать в разных местах кода, и он будет значить один и тот же тип. А обозначает неопределенный тип данных. Хотя в некоторых случаях оба делают одно и то же.

  • @ВалераКонь-п3ж
    @ВалераКонь-п3ж 7 років тому

    Спасибо, брат

  • @jamjam3337
    @jamjam3337 4 місяці тому

    спасибо!

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

    Спасибо!

  • @МаксМакс-ч8к
    @МаксМакс-ч8к 2 роки тому +1

    Всем доброго вечера! ребят, подскажите: где Вы берёте практические задания, на которых руку набиваете?
    Просто из теории лично я понял процентов 20 - 30.... может через практику удастся пробить этот блок!!
    И чисто из любопытства спрошу: кто то реально смог всё понять с первого раза???? или Вы уже где то эту тему
    изучали и это видео просто, как закреп????
    Просто здесь ещё как то можно разобраться, а, когда доходит до практики это капец....
    Кто проходил java марафон (13 день)????
    Всем спасибо!!!!

    • @modernsoftware9129
      @modernsoftware9129 2 роки тому +1

      Я понял все что он сказал(с этого урока). Смотрел год назад этот курс, потом забросил, но тогда я с этого урока ничего не понял)

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

    т.е при super объекты класса Animal не принимаются?

    • @alishevN
      @alishevN  7 років тому +9

      Я в видео немного неясно изъяснился.
      Если мы пишем

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

      Теперь всё стало понятно. Спасибо!

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

      Прошу прощения, а если будет

    • @ДмитрийВалерьевич-с3г
      @ДмитрийВалерьевич-с3г 7 років тому

      Стоит прикрепить это в описание к видео, что бы убрать эту мельчайшую неясность с super, а так всё доходчиво. Спасибо.

    • @ДмитрийВалерьевич-с3г
      @ДмитрийВалерьевич-с3г 7 років тому

      PalateNSe
      Dog тоже включаем.
      "Если мы пишем

  • @ironoscar3948
    @ironoscar3948 5 років тому

    Отличное видео. Подскажите, получила ли тема дженериков где-то продолжение в вашей работе?

  • @looneytoons2006
    @looneytoons2006 7 років тому +1

    огромное спасибо, учу то твоим урокам потом в универ обратно. лол. у тебя понятней и быстрее.

  • @miapdesign5201
    @miapdesign5201 9 місяців тому

    Осталось непонятным самое главное - для чего целое число (id) нужно преобразовывать в строчный вид?
    Объясните, кто знает, пожалуйста!

  • @Manimal9999
    @Manimal9999 2 місяці тому

    Wildcard можно перевести как маска в контексте программирования

  • @Dr.RomanSoproniuk
    @Dr.RomanSoproniuk Рік тому

    А почему пишите List newList= new ArrayList(); , а не ArrayList newList = new ArrayList();

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

    Будет ли ещё Java-марафон Практика ?

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

      да, они теперь проходят 24/7. Переходите по ссылке и запускайте телеграм бота.

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

    Блин с третьего раза только вдуплил что тут от меня хотят. :)

  • @Александр-и1з1ц
    @Александр-и1з1ц 7 років тому

    Спасибо)

  • @ИванИванов-л1э6ы
    @ИванИванов-л1э6ы 3 роки тому

    Пазлы начали.... слаживаться после просмотра к этому видео +видео с продвинутой Джавы про ArrayList.

  • @adrtalladi2404
    @adrtalladi2404 4 роки тому

    Хороший и понятный урок !

  • @ievgeniiaganzina2763
    @ievgeniiaganzina2763 5 років тому

    Спасибо! Все четко и понятно)

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

    Пришлось делать // Set language level to 7

  • @StalkTz
    @StalkTz 7 років тому +1

    А этот Джокер(вилдкард), это просто костыль наследования или как?
    И большое спасибо за прекрасные уроки. С нетерпением жду продолжения )

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

      Не понял вопрос)

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

      javaRussia мм,если правильно понял,на 7:00 говорилось что джокер, используется если "сын" не может наследовать свойство "отца",т.е является в данном случае костылем(вспомогательной приспособой). А кроме подобныйх случаев, он где-то используется?

    • @alishevN
      @alishevN  7 років тому +1

      Да, больше особо нигде не используется.

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

      javaRussia спасибо за ответ

  • @timuradamhanov9037
    @timuradamhanov9037 24 дні тому

    Либо в комментах все гении, либо я тупой. Честное слово, почти после каждого видео, я иду гуглить те или иные моменты. Эти видосы, как мне кажется, для тех, кто уже изучал java поверхностно и пришёл сюда чисто закрепить свои знания

  • @Евгений-ч9к2ф
    @Евгений-ч9к2ф 7 років тому

    (List List) - зачем два раза List?

    • @Евгений-ч9к2ф
      @Евгений-ч9к2ф 7 років тому

      (List listOfAnimal) разве не так дб?

    • @akirarokudo7045
      @akirarokudo7045 7 років тому +1

      Евгений не суть важно. хотя конечно не красиво)

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

      Не знаю, у автора всё красиво, как по мне. Дело в том, что идентификатор list на порядок, а то и два короче, чем вариант с listOfAnimal. Нам пришлось бы указывать имя этой переменной ещё и в качестве второго аргумента в параметрах расширенного цикла for. Поэтому, как говориться, краткость - сестра таланта, а имя переменной list и так достаточно хорошо передаёт семантику переменной.

    • @akirarokudo7045
      @akirarokudo7045 7 років тому +1

      Дмитрий Костенко про краткость, все верно,только суть то поговорки не только в краткости-но и наиболее емкой краткости) во-вторых коммент был именно к List < ? > List, а не List < ? > list. Что для новичков особенно опасно( не в данном случае,но потенциально) т.к. вместо объекта(!) типа List мы можем обращаться к типу List. Ну в третьих опять же, касаемо новичков. Если привыкнуть постоянно писать list, в итоге это может привести к тому что будут list1, list2 и т.д.

    • @Lexoid65
      @Lexoid65 7 років тому +3

      Приветствую! Пересмотрел ещё раз видео и никак не могу понять, откуда Вы взяли, что автор писал именно так: "List < ? > List". На какой секунде видео это присутствует? Просто я вижу только" "List < ? > list" и никакой путаницы здесь не возникает. Мне кажется, что Евгений просто ошибся, когда писал свой комментарий...

  • @dmytrochemesh73
    @dmytrochemesh73 5 років тому

    так и для чего дженерики эти?..

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

      Generics для того, чтобы в качестве параметров можно было бы пеередавать не только сами переменные, но и типы данных. Суть Generics - в этом. Метод может получить () переменыые, в которых хранится ТИП данных и использовать по своему усмотрению. Остальное всё - лирика :)

  • @raccoon8230
    @raccoon8230 4 роки тому

    Спасибо за столь простое и подробное объяснение!

  • @m0ns1eur_
    @m0ns1eur_ 2 роки тому

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

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

    А про ключевое слово super видео и нет, а здесь несколько раз упоминается :)

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

    метасимвольный аргумент)

  • @ПётрПетрович-т1п3и

    Я не понял зачем создавать дефолтные конструкторы

  • @mirnijalexey2765
    @mirnijalexey2765 4 роки тому +3

    Как по мне, то слишком рано затронули эту тему, будем считать, что препод ознакомил, а мы ознакомились, ничего непонятно, но очень интересно))

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

    Я чет не понял( P.s после 2 просмотра стало понятнее)

  • @Kitsikoo
    @Kitsikoo 6 років тому +11

    Оч быстро и ничо не понятно(

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 2 роки тому

      прорешивать нужно всё это, тогда станет понятнее

    • @Daniel-mo1iy
      @Daniel-mo1iy 2 роки тому +1

      Чтобы было понятно мало смотреть видео на Ютубе. 1. Практика, 2. Теория (книги). 80% практики и 20% теории. И только потом можно смотреть видео в Ютубе.

    • @dressran3614
      @dressran3614 Рік тому +2

      @@Daniel-mo1iy Как по мне лучше сначала видео на ютубе потом книги для более обширного изучения

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

    Очень торопитесь...

  • @ПётрПетрович-т1п3и

    Нихрена не понял

  • @harrypothead688
    @harrypothead688 Рік тому +1

    классно накручиваешь себе коменты с положительными отзывами чтобы продать свои курсы по продвинутой джаве

    • @alishevN
      @alishevN  Рік тому +1

      Хах, это крутой показатель, если людям кажется что коменты накрученные)

  • @dominikavolgina4189
    @dominikavolgina4189 2 роки тому +2

    откуда столько восторженных отзывов? если тему не знаешь, по этому видео никогда и не поймешь

  • @АнгелДемон-г2ю
    @АнгелДемон-г2ю 3 роки тому

    Не пойму что тут не понятного то?!

  • @Ценоз
    @Ценоз 4 роки тому +1

    Мдя! Первый урок из этой серии, когда половина не понятно. Что случилось?!

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

      тут уже твои проблемы

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

      @@FerraKube Мы все надеемся,что ты в жизни не состоишся, умный ты наш

  • @C2H5OHH
    @C2H5OHH 2 роки тому +1

    Спасибо!