首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Kotlin Lazy初始化与Dagger Lazy注射

Kotlin Lazy初始化与Dagger Lazy注射
EN

Stack Overflow用户
提问于 2021-02-01 13:15:52
回答 1查看 814关注 0票数 4

我有一个具有OkHttpClient提供程序方法的模块,如下所示:

代码语言:javascript
运行
复制
@Provides
@Singleton
fun provideOkHttpClient(interceptor: HttpLoggingInterceptor): OkHttpClient {
        return OkHttpClient.Builder().addInterceptor(interceptor).build()
}

Retrofit的另一个提供程序方法是这样的:

代码语言:javascript
运行
复制
@Provides
@Singleton
fun provideRetrofitBuilder(client: Lazy<OkHttpClient>,gson: Gson): Retrofit {
....
}

现在,Retrofit的提供者引入了一个懒散的注入的OkHttpClientDagger已经知道如何创建,即使用dagger包中的Lazy包装。,我的问题是,如果它被封装在dagger包中,那么行为是否会有区别?据我理解,dagger包在get()的第一次调用中计算它的值,并记住所有后续调用get()与封装在Lazy kotlin包中的值相同,后者得到当前实例的延迟初始化值?甚至有可能使用kotlin包中的Lazy,这将如何进行呢?他们提供同样的行为吗?谢谢你抽出时间:)

EN

回答 1

Stack Overflow用户

发布于 2021-12-09 19:07:08

我只是尝试了一下,但是带有kotlin.Lazy的变体没有编译:

代码语言:javascript
运行
复制
error: [Dagger/MissingBinding] kotlin.Lazy<? extends com.mycompany.MyClass> cannot be provided without an @Provides-annotated method.

因此,不可能将Lazykotlin中用于依赖注入。至少不是到处都有。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65993403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档