【问题标题】:Is there a compile-time dependency injection tool that supports generics for kotlin (or java)?是否有支持 kotlin(或 java)泛型的编译时依赖注入工具?
【发布时间】:2021-01-03 17:02:09
【问题描述】:

所有运行时 DI(guice、spring、koin、kodein)都支持泛型。

Dagger 2 - 我知道的唯一 DI 编译时工具 - 不支持泛型。

是否有支持 kotlin(或 java)泛型的编译时依赖注入工具?

编辑:示例:

class Engine<T>

class Car<T> @Inject constructor(engine: Engine<T>)

如果我使用 Dagger 2 并创建:

@Module
object MyModule
{
    @Provides
    fun <T> car(engine: Engine<T>): Car<T> = Car(engine)
}

@Component(modules = [MyModule::class])
interface MyComponent
{
    fun <T> car(): Car<T>
}

它不起作用,因为 Dagger 2 在编译时会说,带有 @Provide 的方法不能是泛型类型

【问题讨论】:

  • 为什么说 Dagger 不支持泛型?
  • 使用 Hilt,您不需要组件类,因此不需要注入方法
  • @IR42 Hilt 仅适用于 Android(如果我错了请告诉我,从未使用过)
  • 你调查过Micronaut吗?我不知道它的泛型支持。

标签: java kotlin dependency-injection


【解决方案1】:

根据他们存储库中的some code changes,似乎kotlin-inject 确实支持泛型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    相关资源
    最近更新 更多