В вашем интерфейсе есть общий ToEntity<T>
метод, который вы сделали неуниверсальным в своем классе реализации Gens
как ToEntity<MyOtherClass>
. (Метод универсальный может принимать любой параметр типа, возможно, с учетом определенных ограничений на T
. Ваш класс Gens
пытается предоставить определение для ToEntity
только для параметра типа MyOtherClass
, что побеждает назначение дженериков.)
В вашем примере кода неясно, как ваш класс Gens
пытается использовать тип MyOtherClass
; это, конечно, не связано с логикой ToEntity
. Нам нужно больше информации, чтобы мы могли вести вас дальше.
Чтобы проиллюстрировать, вот что предлагает ваше текущее определение интерфейса ITranslator<E, R>
на простом английском языке:
«Я предоставляю механизм для перевода
любая запись типа R
в сущность
типа E
, этот механизм является
зависит от любого указанного пользователем типа
T
. "
Ваш класс Gens
, с другой стороны, в том виде, в котором он в настоящее время разработан, «реализует» вышеуказанный интерфейс следующим образом:
"Я могу перевести целые числа в строки.
Я предоставляю иллюзию разрешения
пользователь, чтобы указать тип для управления
как этот перевод выполняется, но
на самом деле нет выбора типа.
Класс MyOtherClass
участвует
как-то; это все, что я могу сказать. "
Из этих двух описаний ясно, что класс Gens
на самом деле не делает то, что интерфейс ITranslator<E, R>
гарантирует . А именно, он не желает принимать указанный пользователем тип для своего метода ToEntity
. Вот почему этот код не скомпилируется для вас.