Приведение Kotlin к более конкретному подклассу
Поэтому я пытаюсь связываться с Kotlin, и у меня есть старая Java-среда MVP с плохими обобщениями в Java, где нам пришлось преобразовывать универсальный интерфейс в более конкретный, например public <P extends BaseContract.Presenter> P getPresenter()
Который мы бы бросили в подклассе как
@Override
public AdvertisementContract.Presenter getPresenter()
{
return (AdvertisementContract.Presenter)super.getPresenter();
}
В Котлине я собираюсь за это:
override fun getPresenter(): AdvertisementContract.Presenter
{
return super.getPresenter() as AdvertisementContract.Presenter
}
Могу ли я что-нибудь сделать, не исправляя обобщенные элементы в базовом интерфейсе?
1 ответ
Согласно моему пониманию вашего вопроса, вы могли бы сделать это так,
override fun <P: BaseContract.Presenter> getPresenter(): P {
return mPresenter
}
Где mPresenter может быть экземпляром Any Presenter, расширяющим BaseContract.Presenter
учебный класс