我正在尝试将Dagger 2替换为当前项目中的Koin,我不想在Kotlin中重写某些类来使用它。
可以在java类中注入Koin吗?
在Kotlin只是
// Inject MyPresenter
val presenter : MyPresenter by inject()
由于
答案 0 :(得分:2)
是的,有可能。 只需与此gradle文件同步项目
where column_n RLIKE '^xyz'
在您的Java类中
implementation "org.koin:koin-java:$koin_version"
并在Java类中获取presenter方法,例如
// Inject MyPresenter
replace //val presenter : MyPresenter by inject()
with private Lazy<MyPresenter> presenter = inject(MyPresenter.class);
答案 1 :(得分:2)
您不再需要额外的 koin-java
依赖项,因为它现在是 koin-android
& koin-core
的一部分。
// Imports
import static org.koin.java.KoinJavaComponent.get;
import static org.koin.java.KoinJavaComponent.inject;
import static org.koin.core.qualifier.QualifierKt.named;
import static org.koin.core.parameter.DefinitionParametersKt.parametersOf;
// Lazy injection
Lazy<MyDependency> dependency = inject(MyDependency.class);
// Eager injection
MyDependency dependency = get(MyDependency.class);
// Named injection
get(MyDependency.class, named("MyNamedDependency"));
// Parameter injection
get(MyDependency.class, null, () -> parametersOf(this));
答案 2 :(得分:0)
类或文件可以具有.kt扩展名表示Kotlin,或者.java扩展名表示Java。您无法同时使用这两种语言编写文件或类。
但是你的Java和Kotlin文件可以相互通信,即你可以在一个带有变量的Java类中访问你的Kotlin文件中的那个变量,反之亦然。
因此,您可以注入Kotlin类引用并在Java类中使用它,反之亦然。
这可能会有所帮助:https://kotlinlang.org/docs/tutorials/mixing-java-kotlin-intellij.html
我希望能够解除疑问。
答案 3 :(得分:0)
是的,请确保您在gradle中将koin for Java库导入并使用上述答案。
等级:
implementation "org.koin:koin-java:2.0.1"
答案 4 :(得分:0)
以下代码为我工作,没有,但没有org.koin:koin-java:$ koin_version依赖项:
private MyPresenter presenter = org.koin.java.KoinJavaComponentKoinJavaComponent.inject(MyPresenter.class).getValue();