ни как не мог вкатиться в понимания в то что есть принимаемый тип и добавляемый тип. Только в конце зацепился за резюмирующую таблицу в результате проникся пониманием что это две разности. Спасибо
Спасибо за видео. Сначала было не понятно, когда и почему мы можем брать и добавлять в коллекцию элементы Сначала пробовал запоминать мнемонические правила - 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у ахах, как я тебя понимаю😆
Видео-фаворит по этой теме, но только одно замечание :
При ковариантном типе можно добавить null.
Пожалуйста поправьте, если я не права :)
Блииин наконец-то я понял что означают эти вопросики!!!
Самая офигитительная, понятная лекция на эту тему. Ваще лассно объяснено, большое спасибо)😀
Очень круто, спасибо! Смотрел год назад и вот снова смотрю как в первый раз))) Но в этот раз точно запомнил навсегда)))
Спасибо за видео. Сначала было не понятно, когда и почему мы можем брать и добавлять в коллекцию элементы
Сначала пробовал запоминать мнемонические правила - super - put, extends - get
Но вместо того чтобы пытаться что-то запомнить наизусть лучше понять почему это можно, а это нельзя. Благодаря этому видео у меня получилось разобраться. В Java всё логично, как и всегда. Спасибо за информацию.
Очень долго разбирался с этим вопросом и все это приводило к бОльшей каше, даже по видео были непонятки, но вот эта таблица в конце - спасибо за нее большое.
Спасибо, в голове была каша, особенно был неочевиден момент, что в
Супер, спасибо!
Блин, спасибо) все вроде знал, но первый раз слышал название этому всему)
Великолепное объяснение, задоначу с первой зарплаты.
Обьяснение - бомба) спасибо большое
Спасибо тебе, добрый человек
лайк, хорошее объяснение.
Серега, ты красавчик! Я все понял...СПАСИБО!!!
Самое лучшее, что нашел про , круто
Спасибо за объяснение !
Спасибо большое за прекрасный разбор и примеры!
это лучшее видео по данной теме!) спасибо огромное!
Просто супер, очень понятно рассказано. Не поленился зарегистрироваться ради коммента.
Огромная благодарность за объяснение! Все понял сразу, текстовые варианты не давали результат)
Очень хорошее объяснение! Спасибо! Единственное не сказали что этот принцип называется PECS)
Есть небольшая неточность: в ковариантный тип можно добавить null
Точно. Как Object сверху, null ограничивает снизу любую иерархию. Этакий супер-потомок 😜
Сергей, ты лучший разборщик сложных тем!
Брат за ковариантность лайк на все видосы!
спасибо, благодаря вашему видео понял тему
Супер объяснение! Спасибо большое!!!!
первый видос на эту тему, который, кажется, я понял, надо еще раз пересмотреть, чтобы запомнить
Видео хорошее, в идеале бы белую тему на идею или шрифт повыразительнее
Спасибо за Ваши видео. А по спрингу сделаете подборку видео?
Я в занимаюсь мобильной разработкой. Нет достаточно опыта в спринге, чтоб ему учить.
Превосходное обьяснение!
Ну я был на нескольких десятках собеседований на Джависта и ни разу не слышал этого вопроса. Но видос стоит посмотреть
Просто офигенно!
суперконтент!
спасибо, довольно понятно объяснил)
Спасибо
Огонь!
таблиця в кінці - це скарб! Дякую
Автор топ. Даже расспечатал Q-code и вклеил в тетрадь
Просто и ясно о сложном. Спасибо!
Ухх, супер, то что надо) теперь осталось понять разницу с in out в котлине))
В C# аналогичная ситуация, хорошо хоть на Java можно дополнительные примеры найти
браво!
Огромное спасибо
Отличное объяснение! Спасибо!
Спасибо!!!
Получается, что 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 Спасибо вам! я когда вопрос задавал - я забыл,то что от одного класса могут одновременно напрямую несколько классов наследоваться-тогда все ясно,спасибо за видео и за ответ!очень благодарен)я понял теперь почему вообще ничего нельзя добавить в
Таблица 14:30
учу котлин , самое понятное видео
меня немного сбивает, что приравнивание идет снизу вверх, такое ощущение, что наоборот
Почему в List
Потому что это в текущем контексте у листа тип List
@@arhitutorials Все, дошло)) Спасибо за контент)
Не совсем понял такоей момент: "...extends используется в классах, которые предназначены, чтобы из ни читать, т.е. producer-ах...". А разве продюсер не пишет??? Например, что-то записывает в очередь, который потребитель читатет.
producer это тот кто производит объекты, а consumer - тот кто потребляет.
Имеется с виду что из producer читают, но в него не пишут.
@@arhitutorials Понял, спасибо!
Надо было добавить что иногда могут спросить про принцип pecs и не всегда понятно что речь об этом.
Проверил в IDE, если SUPER T то добавлять можно только наследников T, если extends T то при заборе через get кастуется до T и его предков, немного сбивате с толку эта ига слов наследники, предки, туда-сюда
Почему массивы в java ковариантны?
Видео на темной теме ужасно, нужно увеличивать видос а это не всегда удобно
сишарпер что ли
Java
Зачем эта вариантность в методах Stream? stateless методы ведь каждый элемент массива отдельно обрабатывают и контейнера то не видят.
Вот скол ко видосов не смотрю непонимаю, авторы, в чем проблема сделать крупнее шрифт?! У кого то 4к моник и где-то в жопе экрана он пишет код, что кропе как в 4к невозможно смотреть видео. Ну посмотрите как делают англоязычные коллеги.
Спасибо
Спасибо
Спасибо