在Java类中注入Koin(依赖注入)

时间:2018-06-03 16:56:33

标签: java android dependency-injection kotlin koin

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

可以在java类中注入Koin吗?

在Kotlin只是

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

由于

5 个答案:

答案 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));

Koin Android Java docs

答案 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();