在你的Java库的Gradle文件中:
plugins {
id 'java-library'
id 'kotlin'
id 'kotlin-kapt'
}
java {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'com.google.dagger:dagger:2.27'
kapt 'com.google.dagger:dagger-compiler:2.24'
}
然后创建一个类及其依赖:
class First
@Inject
constructor(
private val second: Second,
private val third: Third
) {
fun firstFunction() {
print(second.secondMessage())
print(third.name)
}
}
class Second(
private val name: String
) {
fun secondMessage(): String {
return name
}
}
class Third(
val name: String
)
然后创建你的Dagger模块:
@Module
class ModuleUtil {
@Provides
fun providesSecond(): Second {
return Second("second")
}
@Provides
fun providesThird(): Third {
return Third("third")
}
}
然后创建您的 飞镖组件(dagger component):
@Singleton
@Component(modules = [
ModuleUtil::class
])
interface MainComponent {
fun maker(): First
}
一个用于处理生成组件的对象:
object DaggerWrapper {
lateinit var mainComponent: MainComponent
fun initComponent() {
mainComponent = DaggerMainComponent
.builder()
.build()
}
}
最后,在您的Android应用程序模块中(例如,在Activity内):
DaggerWrapper.initComponent()
val mainComponent = DaggerWrapper.mainComponent
val first = mainComponent.maker()
first.firstFunction()
implementation 'com.google.dagger:hilt-core:$VERSION'
。 - Paschalis