Приведение 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 учебный класс

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