Я пытаюсь @Inject
класс Outer
, который имеет вложенный data
класс Inner
. Сгенерированный в кинжале код Component
ссылается на вложенный класс как Outer$Inner
, когда Inner
используется как обобщенный тип c.
Мне интересно, есть ли аннотация (или какой-либо другой способ) что я могу использовать для генерации желаемого формата (например, Outer.Inner
).
Код для справки:
// injected class
class Outer @Inject constructor(
private val repository: Repository
) : BaseOuter<Outer.Inner, Output> {
override fun invoke(input: Inner): Observable<Output> {
return repository.getOutput(input.id)
}
data class Inner(
val id: String
)
companion object {
const val NAMED = "OUTER"
}
}
// dagger module
@Named(Outer.NAMED)
@Provides
fun provideOuter(
factory: WrapperFactory<Outer.Inner, Output>,
outer: Outer
): WrappedOuter<Outer.Inner, Output> {
return factory.wrap(outer)
}
// target class where Outer is injected
class TargetClass @Inject constructor(
@Named(Outer.NAMED) val outer: WrappedOuter<Outer.Inner, Output>
)
// generated code in DaggerMainComponent
...
import some.package.name.Outer$Inner;
// error: cannot find symbol
// import some.package.name.Outer$Inner; // should be when Outer.Inner
// ^
// symbol: class Outer$Inner
// location: package some.package.name
...
Кинжал: v2.26 с Kotlin v1.3.61