Java中泛型转Kotlin报错

在使用Kotlin重构原来的Java项目时,Base类中Java的泛型,转Kotlin竟然报错了,下面看一段伪代码

//Java版本的Base接口如下:
//Presenter层抽象接口
public interface IPresenter {}
public abstract class BasePresenter> implements IPresenter {
    //view引用
    V view;
}

public interface IView 

{} public abstract class BaseView

> implements IView

{ //presenter引用 P presenter; }

这个代码在Java中 没有任何问题,但是转Kotlin后,出现了意想不到的报错。

interface IPresenter {}
abstract class BasePresenter> : IPresenter {
    //View引用
    lateinit var view : V
}

interface IView

{} abstract class BaseView

> : IView

{ //presenter引用 lateinit var presenter : P }

报错截图如下:


泛型2.png
泛型1.png

错误大致意识是:类型不对,这。。。简直离谱。
为什么Java可以,转Kotlin居然报错了。尝试了很多种方案以后:
终于功夫不负有心人。给点耐心,终于解决了:代码如下:

interface IPresenter {}
abstract class BasePresenter

,V : BaseView> : IPresenter { //view引用 lateinit var view : V } interface IView

{} abstract class BaseView ,P : BasePresenter> : IView

{ //presenter引用 lateinit var presenter : P }

大致思路就是为了防止无限制的互相引用泛型,直接把自己的类型也当作泛型。注意把自己当作泛型的类型时,需要放在泛型括号的前面。如果不理解,可以把代码拷贝下去,自己动起手来,慢慢体会。

你可能感兴趣的:(Java中泛型转Kotlin报错)