Reputation: 854
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
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