当我尝试为接口 Domain Mapper<PlayerDataEntity, List<PlayerModel>> 提供实现时出错

Error when I try provide the implemenation for the interface DomainMapper<PlayerDataEntity, List<PlayerModel>>

Dagger 2.32

当我尝试为接口提供实现时出现以下错误 DomainMapper<PlayerDataEntity, List<PlayerModel>>

error: [Dagger/MissingBinding] me.androidbox.data.mappers.DomainMapper<? super me.androidbox.data.entities.PlayerDataEntity,? extends java.util.List<me.androidbox.domain.models.PlayerModel>> cannot be provided without an @Provides-annotated method.
public abstract interface ApplicationComponent {
                ^
      me.androidbox.data.mappers.DomainMapper<? super me.androidbox.data.entities.PlayerDataEntity,? extends java.util.List<me.androidbox.domain.models.PlayerModel>> is injected at
          me.androidbox.data.requests.imp.RequestPlayersImp(…, domainMapper)
      me.androidbox.data.requests.imp.RequestPlayersImp is requested at
          me.androidbox.app.application.ApplicationComponent.requestPlayersImp()
          

正在关注 类:

class RequestPlayersImp @Inject constructor(
        private val footballServices: FootballServices,
        private val domainMapper: DomainMapper<PlayerDataEntity, List<PlayerModel>>
) : PlayersInteractor {
}

class DomainMapperImp @Inject constructor(): DomainMapper<PlayerDataEntity, List<PlayerModel>> {    
}

@Module
interface PlayerModule {

    @Binds
    fun provideRequestPlayersImp(requestPlayersImp: RequestPlayersImp): PlayersInteractor

    @Binds
    fun provideFootballServices(mockFootballServices: MockFootballServices): FootballServices

    @Binds
    fun provideDomainMapper(domainMapperImp: DomainMapperImp): DomainMapper<PlayerDataEntity, List<PlayerModel>>
}

不过,我可以通过创建一个新接口来解决这个问题:

interface DomainMapperEntityToDomain : DomainMapper<PlayerDataEntity, List<PlayerModel>>

并按如下方式使用。一切编译正常

class RequestPlayersImp @Inject constructor(
        private val footballServices: FootballServices,
        private val domainMapper:  DomainMapperEntityToDomain
) : PlayersInteractor {
}

class DomainMapperImp @Inject constructor(): DomainMapperEntityToDomain  {  
}

@Binds
fun provideDomainMapper(domainMapperImp: DomainMapperImp): DomainMapperEntityToDomain 

我的问题是为什么我不能使用以下界面:

DomainMapper<PlayerDataEntity, List<PlayerModel>>

非常感谢您的任何建议,

数据 类 以防它们很重要

@JsonClass(generateAdapter = true)
class PlayerDataEntity(
        val data: List<PlayerEntity>
)

data class PlayerModel(
    val playerId: Int,
    val firstname: String,
    val lastname: String,
    val birthday: String,
    val age: Int,
    val weight: Int,
    val height: Int,
)

使用这个:

DomainMapper<@JvmSuppressWildcards PlayerDataEntity, @JvmSuppressWildcards List< @JvmSuppressWildcards PlayerModel>>

而不是:

DomainMapper<PlayerDataEntity, List<PlayerModel>>

您可以在 this link

中找到更多详细信息