Концепция простая. Чтобы поменьше ошибок в коде было, понять полезно. Осваивание основ происходит методом проб и ошибок чуть ли не сразу при виде каких-нибудь дженериков (ака обобщенных типов) и попытка написать свое. Чаще всего без последствий для мозга и "лишь бы уже этот код сдать без видимых багов"
В жизни - от задачи зависит. Если сталкиваешься вообще с этим, то уже точно это некий универсальный код. Скажем, вот недавно нужно было расширить и сделать более удобным использование GWT DataGrid (ну то есть обычная табличка данных с перелистыванием по страницам в вебе написанная на Джаве). Задача абстрактная, дженерики везде, а дальше там уже недалеко и до extends Entity> которая как бы подразумевает ковариантность в море инвариантности... Ну и че - код универсальный, значит сдавать каждой группе, которой придется пользоваться, сразу с заточенным на них примером ("А вот так можно описать базовый и вот это надо доимплементировать для каждого из ваших специфических гридов")
Так я к чему. На примере грида - я не придумал красивого решения (это не значит, то его нет, конечно). Сделал инвариантным. Одни удобнее контраварианто делать, другим - коварианто. Зависит сильно от модели данных и решаемой задачи.
no subject
Date: 2013-09-06 07:03 am (UTC)В жизни - от задачи зависит. Если сталкиваешься вообще с этим, то уже точно это некий универсальный код. Скажем, вот недавно нужно было расширить и сделать более удобным использование GWT DataGrid (ну то есть обычная табличка данных с перелистыванием по страницам в вебе написанная на Джаве). Задача абстрактная, дженерики везде, а дальше там уже недалеко и до extends Entity> которая как бы подразумевает ковариантность в море инвариантности... Ну и че - код универсальный, значит сдавать каждой группе, которой придется пользоваться, сразу с заточенным на них примером ("А вот так можно описать базовый и вот это надо доимплементировать для каждого из ваших специфических гридов")
Так я к чему. На примере грида - я не придумал красивого решения (это не значит, то его нет, конечно). Сделал инвариантным. Одни удобнее контраварианто делать, другим - коварианто. Зависит сильно от модели данных и решаемой задачи.