Однозначно один из лучших обзорных туториалов по дженерикам не только в рунете, но и вообще в целом. Максимально последовательно, грамотно, толково и доходчиво. Пример с билдером - просто сказка! Огромное спасибо за труд с:
@manOfPlanetEarth2 жыл бұрын
да, видос хороший. но я вот с чем не могу разобраться: ни хрена не ясно как готовить ограничение типа и вайлдкарды🤷♂️ я НИ РАЗУ еще не видел четкого объяснения как правильно всё это использовать и в чем их смысл. потому что берется даже не обобщенный метод, у которого на входе и выходе, например, ArrayList и хрен пойми что писать на входе и на выходе в этих угловых скобках: List
@cloudname36664 жыл бұрын
Уф, это было сложно, пересматривал 3 раза видео, вроде что то понял. Спасибо за видос
@ilimsarykbaev50844 жыл бұрын
Ай молодец, так доходчиво объяснил.
@aramzoryan4 жыл бұрын
Надеюсь вся эта информация со временем систематизируется в голове. Пока такое ощущение, будто сунул голову в куст и пытаешься понять логику переплетения веточек.
@artemvorov4 жыл бұрын
На следующем уроке будем разбираться с коллекцией List.
@manOfPlanetEarth2 жыл бұрын
Привет. 6:46 Так а в статических методах нельзя же использовать обобщенный тип из заголовка класса🤔
@artemvorov2 жыл бұрын
@@manOfPlanetEarth Да, всё верно. Я вроде и не говорил, что можно :) А дженерики для метода относятся и к статик и к нон-статик методам. Просто здесь был пример именно со статическими контекстом.
@manOfPlanetEarth2 жыл бұрын
@@artemvorov сбило с толку одинаковое название обобщённого типа и в заголовке класса и в статическом методе. оказывается так можно. я не знал.
@manOfPlanetEarth2 жыл бұрын
@@artemvorov я попробовал и понял: у обобщённых типов возможно перекрытие имён. что-то новое узнал сегодня🤔
@LAZIO14 Жыл бұрын
Спасибо! Но почему ты не показал как создавать метод of? У меня ошибка компиляции, когда я начал переписывать вой код)). Но я потом позже у тебя его увидел))
@TSAR_TOP4 жыл бұрын
а я ещё думал, что урок по конструкторам непростой, как же я ошибался xD
@ASagaida4 жыл бұрын
Круто, спасибо. Жду с нетерпением продожения. P.S. Пример с билдером вызвал смешанные чувства :).
@ПавелК-ю9э2 жыл бұрын
Спасибо. Задачку из Ката решил.
@kekwwwwk Жыл бұрын
Не понял зачем использовать вайлдкард, если можно сделать параметризированый метод, где List тоже самое, что List
@vladimir8718 Жыл бұрын
как перейти в документацию в IDEA на MAC???
@TSAR_TOP4 жыл бұрын
хорошо хоть комментарии Андрея Зорина везде есть, и логика переплетения веточек куста в голове xDDD
@artemvorov4 жыл бұрын
😂
@Stavr0gin_2 жыл бұрын
Для меня урок оказался очень сложным. Не понимаю связи метода simpleInit с методом init. Слишком много "T" в даймонд операторах. Я запутался. Пересмотрел видео раз 10 и перематывал, но увы... Артём, можно как-то на пальцах объяснить для чего нужен метод simpleInit?) Пример с билдером был лишним?) Честно признаюсь, Джаву пытаюсь понять уже больше года и когда смотрю на такие примеры как билдер, то понимаю, что до финиша еще далеко))
@artemvorov2 жыл бұрын
Разница между simpleInit и init только в возвращаемом типе. simpleInit у нас ничего не возвращает (void), внутри такого метода может проходить инициализация каких либо статических полей класса, например, если мы сделаем переменную instance статик, то сможем внутри метода simpleInit проинициализировать её: private static T instance; public static void simpleInit(T instantiator){ instance = instantiator; } Таким образом наш метод simpleInit становится обычным сеттером, только для статического контекста (статик переменной). Попробуй сделать переменную instance статиком и реализовать для неё метод set и get и после вызвать их в каком-то другом классе, где будет метод main.
@Stavr0gin_2 жыл бұрын
@@artemvorov, не выходит сделать private T instance статической. Бьет ошибку "non-static type variable T cannot be referenced from a static context"
@artemvorov2 жыл бұрын
@@Stavr0gin_ Я выбрал не самый удачный пример, Java в отличии от C# не позволяет хранить статические дженерик переменные. В данном случае в методе simpleInit нет особого смысла, я его добавлял что бы показать, как выглядит статик дженерик метод без возвращаемого типа (метод simpleInit) и с возвращаемым типом (метод init).
@Stavr0gin_2 жыл бұрын
@@artemvorov спасибо за ответы. Уже немного разобрался с дженериками
@5ir1u5 Жыл бұрын
это царь Дженериков
@kruvalgen27113 жыл бұрын
Это было зубодробительно....Думаю надо посмотреть раз 5-6, может что-то пойму
@louashby90854 жыл бұрын
this is dark forest simple
@Ruslan-ps9rz2 жыл бұрын
а зачем вообще используются джененрики на практике и параметризированные типы?
@artemvorov2 жыл бұрын
Для этого добавил пример с билдером. Используя дженерики тебе не нужно создавать множество практически одинаковых классов или методов. Мы создали один класс билдер, который можно теперь использовать абсолютно с любым другим классом, если бы не было дженерика, тебе бы пришлось создавать такой билдер для каждого класса отдельно (Если мы возьмем, к примеру, 20 POJO классов, тебе нужно было бы создать 20 билдер-классов или 20 методов в одном билдере). Ещё один пример - коллекции, ты не придумываешь реализацию List для каждого объекта, ты просто пишешь List List List, не было бы дженериков приходилось бы либо использовать Object, что явно плохая идея, либо каждый раз имплементировать List для каждого нового класса.
@Ruslan-ps9rz2 жыл бұрын
@@artemvorov понял. Спасибо за ответ
@Ruslan-ps9rz2 жыл бұрын
Я вот просто на Qa Automation на java учусь понемногу по Вашим видео. Не знаю как в куа критично их досконально знать для создания тестовых классов. Так я понимаю дженерики в листах, хеш мапах. Ну вот посмотрел видео и так довольно сложная тема показалась.