Stampede10343
Stampede10343

Reputation: 854

Kotlin generic casting to a more specific subclass

So I'm trying to mess with Kotlin and I have an old java MVP framework with sort of poor generics in java where we had to cast a generic interface to a more specific one, like public <P extends BaseContract.Presenter> P getPresenter()

Which we would cast in a subclass as

@Override
public AdvertisementContract.Presenter getPresenter()
{
    return (AdvertisementContract.Presenter)super.getPresenter();
}

In Kotlin I'm going for this:

override fun getPresenter(): AdvertisementContract.Presenter
{
    return super.getPresenter() as AdvertisementContract.Presenter
}

Is there anything I can do without fixing the generics in the base interface?

Upvotes: 1

Views: 893

Answers (1)

Mukund Desai
Mukund Desai

Reputation: 106

As per my understanding of your question, you could do it like this,

override fun <P: BaseContract.Presenter> getPresenter(): P {
    return mPresenter
}

Where mPresenter could be instance of Any Presenter extending BaseContract.Presenter class

Upvotes: 1

Related Questions