两者之间有什么区别吗?
List<Map<String, String>>
Run Code Online (Sandbox Code Playgroud)
和
List<? extends Map<String, String>>
Run Code Online (Sandbox Code Playgroud)
?
如果没有差异,使用的好处是? extends什么?
Dagger无法识别Kotlin中提供的一种方法。这是模块的重要部分:
@Provides
@AppScope
fun provideClient(cache: Cache, interceptors: List<Interceptor>?): OkHttpClient {
val httpBuilder = OkHttpClient.Builder()
interceptors?.let {
for (interceptor in interceptors) {
httpBuilder.addInterceptor(interceptor)
}
}
return httpBuilder
.cache(cache)
.build()
}
@Provides
@AppScope
fun provideInterceptors(): List<Interceptor>? {
return listOf(HttpLoggingInterceptor().setLevel(WebServiceConfig.LOGGING_LEVEL))
}
Run Code Online (Sandbox Code Playgroud)
错误消息如下:
AppComponent.java:15: error: java.util.List<? extends okhttp3.Interceptor> cannot be provided without an @Provides-annotated method.
Run Code Online (Sandbox Code Playgroud)
如果我使用MutableList,则可以使用。因此,问题是:Dagger2 / Kotlin中的List有什么问题?