Перевести с java на kotlin класс дженериков - PullRequest
1 голос
/ 16 марта 2020

В настоящее время я работаю над проектом, для которого требуется Java код, переведенный в Kotlin. У меня проблема с дженериками, и я пытаюсь решить ее. Буду признателен за любую помощь!

Ниже приведен код Java:

public abstract class BaseActivity<P extends IBaseActivityMvpPresenter> extends AppCompatActivity implements IBaseActivityMvpView {

public interface IBaseActivityMvpPresenter<V extends IMvpView, S extends IBaseState> extends IStateMvpPresenter<V, S> {

public interface IMvpView {

public interface IBaseState extends Parcelable {

public interface IStateMvpPresenter<V extends IMvpView, S extends IBaseState> extends IMvpPresenter<V> {

public interface IMvpPresenter<V extends IMvpView> {

public interface IBaseActivityMvpView extends IMvpView {

, а вот код kotlin, который я придумал:

abstract class BaseActivity<P : IBaseActivityMvpPresenter<IMvpView, IBaseState>>
: AppCompatActivity(), IBaseActivityMvpView {

interface IBaseActivityMvpPresenter<V : IMvpView, S : IBaseState> : IStateMvpPresenter<V, S> {

interface IMvpView {

interface IBaseState : Parcelable {

interface IStateMvpPresenter<V : IMvpView, S : IBaseState> : IMvpPresenter<V> {

interface IMvpPresenter<V : IMvpView?> {

interface IBaseActivityMvpView : IMvpView {

Проблема с текущим приведением:

@Override
public void setPresenter(@NonNull IMvpPresenter presenter) {
    this.presenter = (P) presenter;
}

до:

override fun setPresenter(@NonNull presenter: IMvpPresenter<*>?) {
    if (presenter is IMvpPresenter) {
        this.presenter = presenter as P
    }
}

У меня исключение приведения класса

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...