Дженерики в Котлине (вопросы инвариантности и ковариации)

abstract class Injector<T:BaseView>  {
  protected abstract val component: BaseComponent<T>

  open fun inject(target: T) = component.inject(target)
}

Моя цель - включить следующее:

  • List<Injector<out BaseView>> injectors список, содержащий разные форсунки

  • injectors.last().inject(target) где target это подтип BaseView,

Но проблема в том, что если в списке нет (ковариация), то я не смогу ввести цели, которые являются подтипами BaseView, Тип ввода inject метод будет Nothing,

С другой стороны, я не могу сделать его инвариантным, потому что список не будет принимать реализации вроде ActivityInjector<SubView>,

У кого-нибудь есть идеи, как это можно решить?

0 ответов

Другие вопросы по тегам