Можно развести полное типодрочерство аля Haskell, написать классы по пять generic параметров. Только вот незадача, это не Haskell
API выглядят чрезвычайно красиво, несовпадающие параметры не возможны, но потом будет ряд проблем исходящих из субкультуры и verbosity Java
- Большинство последующих программистов ничего не поймут когда захотят исправить баг, контингент не тот
- Борьба с erasure
- Скорее всего через время неосилившие начнут городить костыли по бокам через Object и касты
Где ваша граница? Ковариантность и контравариантность - это слишком на вашем проекте?
Навеяно тем что пишут модуль доступа к данным, и начинаю понимать что где-то я перегнул...