1) Да, дженерики Java работают только с типами объектов.Это из-за того, как они реализованы, что происходит через стирание типов - по сути, после того, как он скомпилирован в байт-код, все универсальные типы заменяются на Object
- это было сделано для того, чтобы java-генерики могли работать безизменение базовой JVM / байт-кода (плохое решение, IMO).
2) Да, будут некоторые штрафы за бокс / распаковку;Боюсь, этого не избежать.