Возможно, базовый тип является общим параметром, поэтому фактический тип может быть интерфейсом класса. Рассмотрим:
class MyGen<T, U extends T> {
Также из интерфейсов клиентского кода перспективы практически неотличимы от классов, тогда как для подтипа важно.