04:31 - Generic methods 10:46 - Intersection types 17:28 - Полиморфизм и bridge methods 22:58 - Что нельзя делать с дженериками? 44:41 - Разные параметризации одного интерфейса 47:56 - Wildcard types: мотивировка и решение 1:04:31 - Recursive generics 1:07:24 - Материалы для дальнейшего изучения 1:08:11 - Nada Amin, Rose Tate example 1:10:59 - Radu Grigore example
@MrStim3 жыл бұрын
Удивлен, что там некоторые учащиеся возмущаются тому, какие запреты ввели с дженериками, предлагая какие-либо решения. Понятно же, что разработчики изначально предусмотрели возможные проблемы в дальнейшем, поэтому выбирали наиболее оптимальные выходы из ситуаций. Если что-то запрещено, то не просто так. Не стоит так наивно и быстро делать выводы по каким-либо ограничениям. При имеющемся коде разработчики языка могли решить таким способом, как он и реализован сейчас в действительности. Там же не дурачки сидят.)
@esergey123 жыл бұрын
Спасибо за лекцию. Основные моменты понял
@Paul-Maven4 жыл бұрын
Спасибо за лекцию. Лекция отличная, но я ничего не понял. Буду разбираться по книгам.
@Das.Kleine.Krokodil2 жыл бұрын
Да, главное держать в голове что это рассмотрены особые сложные случаи
@Das.Kleine.Krokodil2 жыл бұрын
Спасибо
@ArtyomDzagaryan Жыл бұрын
здравствуйте подскажите где можно найти весь плейлист со всеми лекциями из этого курса
@ДмитрийРафалович-б2щ2 жыл бұрын
Лекция оч понравилась. Огромное спасибо. Единственное, что я не понял, почему в коде из "дичь 1" (класс Unsound) может скомпилироваться строчка return bind.upcast(constrain, t); constrain в develop time имеет тип - Constrain (связи между T и U никакой), a метод upcast ожидает первый параметр с типом Constrain, где согластно объявлению B extends A => а значит сигнатура метода coerce должно выглядеть следующим образом static U coerce(T t)