несколько лет назад смотрел, все понял) но приходится пересматривать перед собесами, забыл уже подробности. Автору респект !!!
@arsenazaryan51578 күн бұрын
ни как не мог вкатиться в понимания в то что есть принимаемый тип и добавляемый тип. Только в конце зацепился за резюмирующую таблицу в результате проникся пониманием что это две разности. Спасибо
@grinderos.coding8 ай бұрын
Это лучшее объяснение по границам вайлдкард, которые я видел и читал. Спасибо тебе огромное.
@axelrod48404 жыл бұрын
не могу без мата объянисть на сколько я рад))
@БейбутТукибаев-с2ь3 жыл бұрын
весь день не мог понять контравиантность, тут все понятнее стало, спасибо!
@БейбутТукибаев-п3у2 жыл бұрын
опять забыл что такое контравариантность, обшерстил весь гугл и нашел свой же коммент))))
@fedyaka4 Жыл бұрын
@@БейбутТукибаев-п3у ахах, как я тебя понимаю😆
@dataengineer39613 жыл бұрын
Блииин наконец-то я понял что означают эти вопросики!!!
@Sinatra19902 жыл бұрын
Самая офигитительная, понятная лекция на эту тему. Ваще лассно объяснено, большое спасибо)😀
@anastasiiam7836 Жыл бұрын
Видео-фаворит по этой теме, но только одно замечание : При ковариантном типе можно добавить null. Пожалуйста поправьте, если я не права :)
@milordplus Жыл бұрын
Очень круто, спасибо! Смотрел год назад и вот снова смотрю как в первый раз))) Но в этот раз точно запомнил навсегда)))
@jopinfuyiro5570 Жыл бұрын
Спасибо за видео. Сначала было не понятно, когда и почему мы можем брать и добавлять в коллекцию элементы Сначала пробовал запоминать мнемонические правила - super - put, extends - get Но вместо того чтобы пытаться что-то запомнить наизусть лучше понять почему это можно, а это нельзя. Благодаря этому видео у меня получилось разобраться. В Java всё логично, как и всегда. Спасибо за информацию.
@andrei82993 жыл бұрын
Очень долго разбирался с этим вопросом и все это приводило к бОльшей каше, даже по видео были непонятки, но вот эта таблица в конце - спасибо за нее большое.
@severustvr8202 Жыл бұрын
Великолепное объяснение, задоначу с первой зарплаты.
@johnvolt91574 жыл бұрын
Блин, спасибо) все вроде знал, но первый раз слышал название этому всему)
@spacecowboy300012 күн бұрын
Супер, спасибо!
@ВасильМихальчук-ж7т Жыл бұрын
таблиця в кінці - це скарб! Дякую
@НикитаКичигин-щ3ф5 ай бұрын
Спасибо тебе, добрый человек
@denisgeraskin5532 Жыл бұрын
Серега, ты красавчик! Я все понял...СПАСИБО!!!
@m0naco6087 ай бұрын
Спасибо за объяснение !
@mrrnyash8942 Жыл бұрын
Спасибо, в голове была каша, особенно был неочевиден момент, что в
@billerkean1806 Жыл бұрын
лайк, хорошее объяснение.
@ironoscar39484 жыл бұрын
Есть небольшая неточность: в ковариантный тип можно добавить null
Просто супер, очень понятно рассказано. Не поленился зарегистрироваться ради коммента.
@ZubkovKirill Жыл бұрын
Очень хорошее объяснение! Спасибо! Единственное не сказали что этот принцип называется PECS)
@ЕкатеринаАйвазова-м2п Жыл бұрын
Спасибо большое за прекрасный разбор и примеры!
@rollingdice2 жыл бұрын
это лучшее видео по данной теме!) спасибо огромное!
@dusheslov27004 жыл бұрын
Брат за ковариантность лайк на все видосы!
@sanix183 Жыл бұрын
Сергей, ты лучший разборщик сложных тем!
@ВладиславПрокопенко-я5н2 жыл бұрын
Спасибо
@imbc7867ghuui92 жыл бұрын
Ухх, супер, то что надо) теперь осталось понять разницу с in out в котлине))
@nikolaystepanets24832 жыл бұрын
В C# аналогичная ситуация, хорошо хоть на Java можно дополнительные примеры найти
@Horoshiy582 жыл бұрын
Огромная благодарность за объяснение! Все понял сразу, текстовые варианты не давали результат)
@zhennik263 Жыл бұрын
Ну я был на нескольких десятках собеседований на Джависта и ни разу не слышал этого вопроса. Но видос стоит посмотреть
@abramovdenis092 жыл бұрын
Видео хорошее, в идеале бы белую тему на идею или шрифт повыразительнее
@olyalya9651 Жыл бұрын
Супер объяснение! Спасибо большое!!!!
@ДенисШироков-э3в2 жыл бұрын
спасибо, благодаря вашему видео понял тему
@anastasiyachibisova2496 Жыл бұрын
Превосходное обьяснение!
@OlegSuhovAlex Жыл бұрын
Спасибо за Ваши видео. А по спрингу сделаете подборку видео?
@arhitutorials Жыл бұрын
Я в занимаюсь мобильной разработкой. Нет достаточно опыта в спринге, чтоб ему учить.
@telephon3208 Жыл бұрын
суперконтент!
@СтасГлова4 жыл бұрын
Автор топ. Даже расспечатал Q-code и вклеил в тетрадь
@maksigors Жыл бұрын
спасибо, довольно понятно объяснил)
@бендерродригез-ф3ш4 жыл бұрын
первый видос на эту тему, который, кажется, я понял, надо еще раз пересмотреть, чтобы запомнить
@ИльшатБиккузин2 жыл бұрын
Контент топчик, всё доходчиво разъяснил наконец-то понятно ))))
@СергейСеменин-щ5д3 жыл бұрын
Просто и ясно о сложном. Спасибо!
@Aticinsane2 жыл бұрын
Отличное объяснение! Спасибо!
@e.s.krivonogov2 жыл бұрын
Просто офигенно!
@ivank88123 жыл бұрын
Огромное спасибо
@СергейЯчменников2 жыл бұрын
браво!
@svalyavasvalyava98672 жыл бұрын
Спасибо!!!
@manul-2823 жыл бұрын
Хороший материал! Большое спасибо!
@d.mertsalov4 жыл бұрын
Спасибо! Таблицу законспектировал:)
@d1ns_7995 ай бұрын
Получается, что wildcards нужны как раз для того, чтобы обойти свойство инвариантности у производных классов от классов с использованием параметризованных типов (дженериков). Если я правильно это понял
@simplechannel78594 жыл бұрын
Огонь!
@frozen10932 жыл бұрын
Спасибо, стало чуть понятнее)
@ilya98522 жыл бұрын
Таблица 14:30
@pavelkalinin11194 жыл бұрын
У Вас на редкость, для программера, хорошо поставлена речь! Спасибо! ИнВариантность - по простому, без вариантов)), если то, только его КоВариантность - со вариантность
@arhitutorials4 жыл бұрын
Это не речь, это магия монтажа) Когда монтирую видео, вырезаю все неудачно сказанные фразы, по этому результат получается более-менее приемлемый. В случае , у нас есть гарантия, что T как минимум является Type. В случае , гарантируется что T - один из предков Type, но какой именно не известно. Из-за этого и возникает ограничение по чтению. Из T безопасно присвоить можно только в Object, потому что точный тип T неизвестен. Зато писать в T можно любых наследников Type, так как они гарантировано могут использоваться везде, где нужен тот самый неизвестный предок Type. В общем, вся логика подчинена типобезопасности.
@p.shpyro4 жыл бұрын
Большое спасибо!
@TheMarquis4 жыл бұрын
Спасибо, очень доступно.
@phil29642 жыл бұрын
👍👍👍👍
@wladimir136610 ай бұрын
А как так получается, что в List мы можем добавлять только НАСЛЕДНИКОВ и сам Type, а читать только ПРЕДКОВ и Type? Как это возможно, если List будет состоять только из НАСЛЕДНИКОВ и самого Type? UPD: спустя несколько просмотров + просмотра про стирание типов - я все понял Спасибо большое!
@quantumtv95093 жыл бұрын
Спасибо за видео!)))
@ВасилийЮдин-п8ы Жыл бұрын
лучший)
@1236Destructor Жыл бұрын
Я правильно понимаю, что ин/ко/контр-вариантность - это касается только отношения ссылки и присваиваемой коллекции, т.е. только первая колонка финальной таблицы ???
@maxkudinov8481 Жыл бұрын
В таблице для инвариантного листа можем читать предков, а как в инвариантном листе могут оказаться предки, например number в integer?
@alexandr6055 Жыл бұрын
Добрый день. Подскажите, в чем смысл использовать
@mangnifista7984 Жыл бұрын
Да, только в пределах цепочки наследования, а не все подряд. В этом же видео как раз показан такой вариант. То есть
@ВасяЩербаков-ф4ы11 ай бұрын
Привет! Свпспбо за урок, познавательно! Но у мен вопрос. Вот вы там создали Статичесский класс фрукт, Цитрус и так даллее. Разве статический класс е должен содержать только статичесские поля? У вас обычные? И еще один вопрос, почему у вас вместо знака присваивания тире? ))
@arhitutorials11 ай бұрын
Привет. Статический класс - это обычный класс с обычными полями.
@fkb_ali Жыл бұрын
а есть видео или статья с объяснением причин: почему нельзя записывать или считывать данные? не догоняю
@karaedd3 жыл бұрын
красава
@kaperdi1653 Жыл бұрын
учу котлин , самое понятное видео
@AnotherCogInTheMurderMachine2 жыл бұрын
Пожалуйста помогите,у меня вопрос: почему на 9:33 делается вывод,что в ArrayList < ? extends Citrus> oranges нельзя НИЧЕГО вставить-понятно,что мы точно не знаем какой там конкретно тип-но мы же точно можем вставить BigRoundOrange ? ведь мы типизируем вышеуказанную коллекцию либо Citrus либо Orange либо BigRoundOrange - и получается,что BigRoundOrange мы точно можем встать ,разве нет? в чем я не прав? (чувствую,что в чем-то не прав)))
@arhitutorials2 жыл бұрын
А потом кто-нибудь сделает класс BigRoundLimon, передаст список с ними в эту функцию и все сломается) Задача компилятора гарантировать, что код будет всегда правильно работать. Это достигается путем запрета любых вариантов, которые позволяют что-либо сломать.
@AnotherCogInTheMurderMachine2 жыл бұрын
@@arhitutorials Спасибо вам! я когда вопрос задавал - я забыл,то что от одного класса могут одновременно напрямую несколько классов наследоваться-тогда все ясно,спасибо за видео и за ответ!очень благодарен)я понял теперь почему вообще ничего нельзя добавить в
@wilyammiller3631 Жыл бұрын
меня немного сбивает, что приравнивание идет снизу вверх, такое ощущение, что наоборот
@oldjohn1503 Жыл бұрын
Почему в List
@arhitutorials Жыл бұрын
Потому что это в текущем контексте у листа тип List
@oldjohn1503 Жыл бұрын
@@arhitutorials Все, дошло)) Спасибо за контент)
@sovietunionmissionary7 ай бұрын
Надо было добавить что иногда могут спросить про принцип pecs и не всегда понятно что речь об этом.
@MaximBodrov Жыл бұрын
Не совсем понял такоей момент: "...extends используется в классах, которые предназначены, чтобы из ни читать, т.е. producer-ах...". А разве продюсер не пишет??? Например, что-то записывает в очередь, который потребитель читатет.
@arhitutorials Жыл бұрын
producer это тот кто производит объекты, а consumer - тот кто потребляет. Имеется с виду что из producer читают, но в него не пишут.
@MaximBodrov Жыл бұрын
@@arhitutorials Понял, спасибо!
@pawsdev2 жыл бұрын
Проверил в IDE, если SUPER T то добавлять можно только наследников T, если extends T то при заборе через get кастуется до T и его предков, немного сбивате с толку эта ига слов наследники, предки, туда-сюда
@oldjohn1503 Жыл бұрын
Почему массивы в java ковариантны?
@mashamanina61064 жыл бұрын
Видео на темной теме ужасно, нужно увеличивать видос а это не всегда удобно
@noone-hi6kq3 жыл бұрын
сишарпер что ли
@СергейМалышев-т9у3 жыл бұрын
Java
@John.Constantine.777 Жыл бұрын
Зачем эта вариантность в методах Stream? stateless методы ведь каждый элемент массива отдельно обрабатывают и контейнера то не видят.
@donpedro21257 ай бұрын
Вот скол ко видосов не смотрю непонимаю, авторы, в чем проблема сделать крупнее шрифт?! У кого то 4к моник и где-то в жопе экрана он пишет код, что кропе как в 4к невозможно смотреть видео. Ну посмотрите как делают англоязычные коллеги.