文档对此进行了很好的介绍,@Inject
并且@Provides
是在依赖关系图中引入依赖关系的两种不同方式。它们适用于不同的用例
@Inject
@Inject
构造函数或属性即可完成@Provides
某些人更清楚@Provides
@Inject
@Inject
@Provides
该方法返回接口类型下面以上述三点为例@Provides
// You can't mark constructor of String with @Inject but you can use @Provides
@Provides
fun provideString(): String {
return "Hello World"
}
Run Code Online (Sandbox Code Playgroud)
@Provides
fun provideCar(): Car {
val car = Car()
// Do some configuration before introducing it in graph, you can't do this with @Inject
car.setMaxSpeed(100)
car.fillFuel()
return car
}
Run Code Online (Sandbox Code Playgroud)
interface Logger { fun log() }
class DiscLogger : Logger{ override fun log() { } }
class MemoryLogger : Logger { override fun log() { } }
@Provides
fun provideLogger(): Logger {
val logger = DiscLogger() \\ or MemoryLogger()
return logger
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2135 次 |
最近记录: |