首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java类中注入Koin

在Java类中注入Koin
EN

Stack Overflow用户
提问于 2018-06-04 00:56:33
回答 4查看 7.4K关注 0票数 9

在我当前的项目中,我正在尝试将Dagger 2替换为Koin,并且我不想在Kotlin中重写一些类来使用它。

可以在java类中使用Koin进行注入吗?

在Kotlin就是

// Inject MyPresenter
val presenter : MyPresenter by inject()

谢谢

EN

回答 4

Stack Overflow用户

发布于 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() 
票数 15
EN

Stack Overflow用户

发布于 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

我希望这消除了疑虑。

票数 2
EN

Stack Overflow用户

发布于 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));

Koin Android Java docs

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50668797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档