DZ>Не согласен. Шаблоны — одно из проявлений полиморфизма, а именно static polymorphism
Я не спорю. Я просто говорю, что это более "продвинутое" средство, чем обычный полиморфизм.
И как в любом деле, усложнение должно быть оправдано. То есть должны быть веские причины, чтобы
использовать это средство.
DZ>Все зависит от задачи. Если хочется применять представленные обертки на широком фронте работ, то почему бы не использовать типизацию? Если для реализации логики действительно нужны какие-то характерные особенности классов (т.е. если вместо типов-параметров S и T использовать Object, то потом придется даункастить к нужному типу), то решение оправдано.
В том-то и дело, что сущности используемые в качестве State — перечисления...

Аргументация человека: "применение Generics дает мне возможность удобно использовать контекстные средства редактора Intellij Idea"
DZ>j2se — первое, что приходит в голову — коллекции, thread local. j2ee — думаю, что в новых технологиях будут использоваться дженерики (там, где это уместно). Вообще, имхо дженерики не панацея и не модная фишка, которую надо использовать где только можно. Это просто одна из возможностей, предоставляемых языком, и использовать ее надо только тогда, когда она реально удобна и полезна. Это то же самое, что прочитать GoF и начать тыркать шаблоны где надо и где не надо.
Да, я знаю, где в J2SE используются generics. Они используются в совершенно оправданных местах. Их назначение — очевидно.
А здесь мы получаем конструкции типа:
public abstract class AbstractSession<R extends Request>
implements Session, RequestSource<R>, Stateful<AbstractSession, AbstractSession.State>