ни как не мог вкатиться в понимания в то что есть принимаемый тип и добавляемый тип. Только в конце зацепился за резюмирующую таблицу в результате проникся пониманием что это две разности. Спасибо
Очень долго разбирался с этим вопросом и все это приводило к бОльшей каше, даже по видео были непонятки, но вот эта таблица в конце - спасибо за нее большое.
Спасибо за видео. Сначала было не понятно, когда и почему мы можем брать и добавлять в коллекцию элементы Сначала пробовал запоминать мнемонические правила - super - put, extends - get Но вместо того чтобы пытаться что-то запомнить наизусть лучше понять почему это можно, а это нельзя. Благодаря этому видео у меня получилось разобраться. В Java всё логично, как и всегда. Спасибо за информацию.
Получается, что wildcards нужны как раз для того, чтобы обойти свойство инвариантности у производных классов от классов с использованием параметризованных типов (дженериков). Если я правильно это понял
У Вас на редкость, для программера, хорошо поставлена речь! Спасибо! ИнВариантность - по простому, без вариантов)), если то, только его КоВариантность - со вариантность
Это не речь, это магия монтажа) Когда монтирую видео, вырезаю все неудачно сказанные фразы, по этому результат получается более-менее приемлемый. В случае , у нас есть гарантия, что T как минимум является Type. В случае , гарантируется что T - один из предков Type, но какой именно не известно. Из-за этого и возникает ограничение по чтению. Из T безопасно присвоить можно только в Object, потому что точный тип T неизвестен. Зато писать в T можно любых наследников Type, так как они гарантировано могут использоваться везде, где нужен тот самый неизвестный предок Type. В общем, вся логика подчинена типобезопасности.
А как так получается, что в List мы можем добавлять только НАСЛЕДНИКОВ и сам Type, а читать только ПРЕДКОВ и Type? Как это возможно, если List будет состоять только из НАСЛЕДНИКОВ и самого Type? UPD: спустя несколько просмотров + просмотра про стирание типов - я все понял Спасибо большое!
Я правильно понимаю, что ин/ко/контр-вариантность - это касается только отношения ссылки и присваиваемой коллекции, т.е. только первая колонка финальной таблицы ???
Привет! Свпспбо за урок, познавательно! Но у мен вопрос. Вот вы там создали Статичесский класс фрукт, Цитрус и так даллее. Разве статический класс е должен содержать только статичесские поля? У вас обычные? И еще один вопрос, почему у вас вместо знака присваивания тире? ))
Пожалуйста помогите,у меня вопрос: почему на 9:33 делается вывод,что в ArrayList < ? extends Citrus> oranges нельзя НИЧЕГО вставить-понятно,что мы точно не знаем какой там конкретно тип-но мы же точно можем вставить BigRoundOrange ? ведь мы типизируем вышеуказанную коллекцию либо Citrus либо Orange либо BigRoundOrange - и получается,что BigRoundOrange мы точно можем встать ,разве нет? в чем я не прав? (чувствую,что в чем-то не прав)))
А потом кто-нибудь сделает класс BigRoundLimon, передаст список с ними в эту функцию и все сломается) Задача компилятора гарантировать, что код будет всегда правильно работать. Это достигается путем запрета любых вариантов, которые позволяют что-либо сломать.
@@arhitutorials Спасибо вам! я когда вопрос задавал - я забыл,то что от одного класса могут одновременно напрямую несколько классов наследоваться-тогда все ясно,спасибо за видео и за ответ!очень благодарен)я понял теперь почему вообще ничего нельзя добавить в
Не совсем понял такоей момент: "...extends используется в классах, которые предназначены, чтобы из ни читать, т.е. producer-ах...". А разве продюсер не пишет??? Например, что-то записывает в очередь, который потребитель читатет.
Проверил в IDE, если SUPER T то добавлять можно только наследников T, если extends T то при заборе через get кастуется до T и его предков, немного сбивате с толку эта ига слов наследники, предки, туда-сюда
Вот скол ко видосов не смотрю непонимаю, авторы, в чем проблема сделать крупнее шрифт?! У кого то 4к моник и где-то в жопе экрана он пишет код, что кропе как в 4к невозможно смотреть видео. Ну посмотрите как делают англоязычные коллеги.
несколько лет назад смотрел, все понял) но приходится пересматривать перед собесами, забыл уже подробности. Автору респект !!!
ни как не мог вкатиться в понимания в то что есть принимаемый тип и добавляемый тип. Только в конце зацепился за резюмирующую таблицу в результате проникся пониманием что это две разности. Спасибо
Это лучшее объяснение по границам вайлдкард, которые я видел и читал. Спасибо тебе огромное.
не могу без мата объянисть на сколько я рад))
весь день не мог понять контравиантность, тут все понятнее стало, спасибо!
опять забыл что такое контравариантность, обшерстил весь гугл и нашел свой же коммент))))
@@БейбутТукибаев-п3у ахах, как я тебя понимаю😆
Блииин наконец-то я понял что означают эти вопросики!!!
Очень долго разбирался с этим вопросом и все это приводило к бОльшей каше, даже по видео были непонятки, но вот эта таблица в конце - спасибо за нее большое.
Самая офигитительная, понятная лекция на эту тему. Ваще лассно объяснено, большое спасибо)😀
Спасибо за видео. Сначала было не понятно, когда и почему мы можем брать и добавлять в коллекцию элементы
Сначала пробовал запоминать мнемонические правила - super - put, extends - get
Но вместо того чтобы пытаться что-то запомнить наизусть лучше понять почему это можно, а это нельзя. Благодаря этому видео у меня получилось разобраться. В Java всё логично, как и всегда. Спасибо за информацию.
Обьяснение - бомба) спасибо большое
Видео-фаворит по этой теме, но только одно замечание :
При ковариантном типе можно добавить null.
Пожалуйста поправьте, если я не права :)
Очень круто, спасибо! Смотрел год назад и вот снова смотрю как в первый раз))) Но в этот раз точно запомнил навсегда)))
Блин, спасибо) все вроде знал, но первый раз слышал название этому всему)
Спасибо большое за прекрасный разбор и примеры!
Просто супер, очень понятно рассказано. Не поленился зарегистрироваться ради коммента.
Супер, спасибо!
это лучшее видео по данной теме!) спасибо огромное!
Брат за ковариантность лайк на все видосы!
лайк, хорошее объяснение.
Самое лучшее, что нашел про , круто
Спасибо, в голове была каша, особенно был неочевиден момент, что в
Серега, ты красавчик! Я все понял...СПАСИБО!!!
Спасибо тебе, добрый человек
Спасибо за объяснение !
Сергей, ты лучший разборщик сложных тем!
Великолепное объяснение, задоначу с первой зарплаты.
Супер объяснение! Спасибо большое!!!!
Огромная благодарность за объяснение! Все понял сразу, текстовые варианты не давали результат)
Автор топ. Даже расспечатал Q-code и вклеил в тетрадь
Есть небольшая неточность: в ковариантный тип можно добавить null
Точно. Как Object сверху, null ограничивает снизу любую иерархию. Этакий супер-потомок 😜
спасибо, благодаря вашему видео понял тему
спасибо, довольно понятно объяснил)
Ухх, супер, то что надо) теперь осталось понять разницу с in out в котлине))
В C# аналогичная ситуация, хорошо хоть на Java можно дополнительные примеры найти
Контент топчик, всё доходчиво разъяснил наконец-то понятно ))))
Просто и ясно о сложном. Спасибо!
Отличное объяснение! Спасибо!
Превосходное обьяснение!
Спасибо! Таблицу законспектировал:)
Просто офигенно!
Очень хорошее объяснение! Спасибо! Единственное не сказали что этот принцип называется PECS)
Спасибо за Ваши видео. А по спрингу сделаете подборку видео?
Я в занимаюсь мобильной разработкой. Нет достаточно опыта в спринге, чтоб ему учить.
Хороший материал! Большое спасибо!
Таблица 14:30
первый видос на эту тему, который, кажется, я понял, надо еще раз пересмотреть, чтобы запомнить
Видео хорошее, в идеале бы белую тему на идею или шрифт повыразительнее
суперконтент!
Огонь!
Спасибо, очень доступно.
Спасибо, стало чуть понятнее)
Огромное спасибо
браво!
Спасибо
Большое спасибо!
Спасибо за видео!)))
таблиця в кінці - це скарб! Дякую
Ну я был на нескольких десятках собеседований на Джависта и ни разу не слышал этого вопроса. Но видос стоит посмотреть
Спасибо!!!
лучший)
Получается, что wildcards нужны как раз для того, чтобы обойти свойство инвариантности у производных классов от классов с использованием параметризованных типов (дженериков). Если я правильно это понял
У Вас на редкость, для программера, хорошо поставлена речь! Спасибо!
ИнВариантность - по простому, без вариантов)), если то, только его
КоВариантность - со вариантность
Это не речь, это магия монтажа) Когда монтирую видео, вырезаю все неудачно сказанные фразы, по этому результат получается более-менее приемлемый.
В случае , у нас есть гарантия, что T как минимум является Type.
В случае , гарантируется что T - один из предков Type, но какой именно не известно. Из-за этого и возникает ограничение по чтению. Из T безопасно присвоить можно только в Object, потому что точный тип T неизвестен. Зато писать в T можно любых наследников Type, так как они гарантировано могут использоваться везде, где нужен тот самый неизвестный предок Type.
В общем, вся логика подчинена типобезопасности.
А как так получается, что в List мы можем добавлять только НАСЛЕДНИКОВ и сам Type, а читать только ПРЕДКОВ и Type? Как это возможно, если List будет состоять только из НАСЛЕДНИКОВ и самого Type?
UPD: спустя несколько просмотров + просмотра про стирание типов - я все понял
Спасибо большое!
Я правильно понимаю, что ин/ко/контр-вариантность - это касается только отношения ссылки и присваиваемой коллекции, т.е. только первая колонка финальной таблицы ???
👍👍👍👍
Добрый день. Подскажите, в чем смысл использовать
Да, только в пределах цепочки наследования, а не все подряд. В этом же видео как раз показан такой вариант.
То есть
Привет! Свпспбо за урок, познавательно! Но у мен вопрос. Вот вы там создали Статичесский класс фрукт, Цитрус и так даллее. Разве статический класс е должен содержать только статичесские поля? У вас обычные? И еще один вопрос, почему у вас вместо знака присваивания тире? ))
Привет. Статический класс - это обычный класс с обычными полями.
В таблице для инвариантного листа можем читать предков, а как в инвариантном листе могут оказаться предки, например number в integer?
Пожалуйста помогите,у меня вопрос: почему на 9:33 делается вывод,что в ArrayList < ? extends Citrus> oranges нельзя НИЧЕГО вставить-понятно,что мы точно не знаем какой там конкретно тип-но мы же точно можем вставить BigRoundOrange ? ведь мы типизируем вышеуказанную коллекцию либо Citrus либо Orange либо BigRoundOrange - и получается,что BigRoundOrange мы точно можем встать ,разве нет? в чем я не прав? (чувствую,что в чем-то не прав)))
А потом кто-нибудь сделает класс BigRoundLimon, передаст список с ними в эту функцию и все сломается)
Задача компилятора гарантировать, что код будет всегда правильно работать. Это достигается путем запрета любых вариантов, которые позволяют что-либо сломать.
@@arhitutorials Спасибо вам! я когда вопрос задавал - я забыл,то что от одного класса могут одновременно напрямую несколько классов наследоваться-тогда все ясно,спасибо за видео и за ответ!очень благодарен)я понял теперь почему вообще ничего нельзя добавить в
красава
а есть видео или статья с объяснением причин: почему нельзя записывать или считывать данные? не догоняю
учу котлин , самое понятное видео
меня немного сбивает, что приравнивание идет снизу вверх, такое ощущение, что наоборот
Почему в List
Потому что это в текущем контексте у листа тип List
@@arhitutorials Все, дошло)) Спасибо за контент)
Не совсем понял такоей момент: "...extends используется в классах, которые предназначены, чтобы из ни читать, т.е. producer-ах...". А разве продюсер не пишет??? Например, что-то записывает в очередь, который потребитель читатет.
producer это тот кто производит объекты, а consumer - тот кто потребляет.
Имеется с виду что из producer читают, но в него не пишут.
@@arhitutorials Понял, спасибо!
Надо было добавить что иногда могут спросить про принцип pecs и не всегда понятно что речь об этом.
Проверил в IDE, если SUPER T то добавлять можно только наследников T, если extends T то при заборе через get кастуется до T и его предков, немного сбивате с толку эта ига слов наследники, предки, туда-сюда
Почему массивы в java ковариантны?
Видео на темной теме ужасно, нужно увеличивать видос а это не всегда удобно
сишарпер что ли
Java
Зачем эта вариантность в методах Stream? stateless методы ведь каждый элемент массива отдельно обрабатывают и контейнера то не видят.
Вот скол ко видосов не смотрю непонимаю, авторы, в чем проблема сделать крупнее шрифт?! У кого то 4к моник и где-то в жопе экрана он пишет код, что кропе как в 4к невозможно смотреть видео. Ну посмотрите как делают англоязычные коллеги.
Спасибо
Спасибо
Спасибо