在我当前的项目中,我正在尝试将Dagger 2替换为Koin,并且我不想在Kotlin中重写一些类来使用它。
可以在java类中使用Koin进行注入吗?
在Kotlin就是
// Inject MyPresenter
val presenter : MyPresenter by inject()
谢谢
发布于 2019-09-02 22:52:57
是的,这是可能的。只需将项目与此gradle文件同步
implementation "org.koin:koin-java:$koin_version"
在java类中
// Inject MyPresenter
replace //val presenter : MyPresenter by inject()
with private Lazy<MyPresenter> presenter = inject(MyPresenter.class);
并在Java类中获取presenter方法,如下所示
presenter.getValue().sayHello()
发布于 2018-06-04 01:12:01
类或文件可以使用.kt扩展名表示Kotlin,也可以使用.java扩展名表示Java。您不能同时用这两种语言编写文件或类。
但是您的Java和Kotlin文件可以相互通信,即您可以使用变量创建Java类并在Kotlin文件中访问该变量,反之亦然。
因此您可以注入Kotlin类引用并在Java类中使用它,反之亦然。
这可能会有帮助:https://kotlinlang.org/docs/tutorials/mixing-java-kotlin-intellij.html
我希望这消除了疑虑。
发布于 2021-04-07 20:51:18
您不再需要额外的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));
https://stackoverflow.com/questions/50668797
复制相似问题