【问题标题】:Dagger Issue - Generate useCase has error匕首问题 - 生成用例有错误
【发布时间】:2020-12-07 12:06:12
【问题描述】:

我创建了我的用例并设置输入和输出,然后在模块上提供它,一切正常。


class GetProfileUseCase constructor(
    private val repository: Repository,
    defaultDispatcher: CoroutineDispatcher
) : SuspendUseCase<Request, ResultEntity<Response>>(defaultDispatcher) {

    override suspend fun execute(parameters: Request): ResultEntity<Response> {
        return repository.getProfile(parameters)
    }
}

这是我的数据类


sealed class GetProfile : Serializable {

    data class Request(
        val nothing: Nothing? = null
    ) : GetProfile()

    data class Response(
        val user: User? = User()
    ) : GetProfile()
}

因为 Request 类中没有参数,我尝试将其更改为:

object Request

但是在构建它时出现 IDE 错误:

错误:ViewModel_Factory 类中的方法创建不能应用于给定类型;

这是我的视图模型:

class ViewModel @Inject constructor(
    private val getProfileUseCase: GetProfileUseCase
) : BaseViewModel()

我不知道为什么会这样,而且 dagger 无法生成类!!!

将Request设置为数据类时可以正常工作,但将其设置为对象类时会崩溃

【问题讨论】:

    标签: java android kotlin dependency-injection dagger


    【解决方案1】:

    因为 Request 类中没有参数,我尝试将其更改为: 对象请求

    您似乎认为object 与带有单个无参数constructorclass 相同,这是不正确的。为了完全理解,我鼓励您阅读this 线程。 但是,我将尝试简要说明您的代码为何不起作用

    当您执行object Request 时,它使Request 成为singleton,这意味着您不能再使用val instance = Request() 创建它的instances,原因是Requestconstructor 被kotlin 标记为私有编译器。

    所以当你的代码(dagger) 尝试使用new Request() 注入Request 时,它会给你错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-17
      • 2015-01-17
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      • 2019-11-18
      相关资源
      最近更新 更多