Loading...

Binding Into Map With KClass Type

Answer #1 100 %

When using KClass in an annotation, it actually gets compiled to Java's Class. But the actual issue is the wildcard in java.util.Map,? extends javax.inject.Provider> that the Kotlin compiler is generating.

Assuming that @ViewModelKey is defined as

@MapKey
annotation class ViewModelKey(val value: KClass)

You'll need to define your injection site as

Map, @JvmSuppressWildcards Provider>

Using @JvmSuppressWildcards will prevent the compiler from generating wildcards.

I don't actually know, why wildcards are not supported by the Dagger compiler. You can see a similar issue here: Dagger 2: How to inject Map, Provider>

You’ll also like:


© 2023 CodeForDev.com -