先上java代码:publicclassTUtil{publicstaticTgetT(Objecto,inti){try{return((Class)((ParameterizedType)(o.getClass().getGenericSuperclass())).getActualTypeArguments()[i]).newInstance();}catch(InstantiationExceptione){}catch(IllegalAccessExceptione){}catch(ClassCastExceptione){}returnnull;}}//调用者只需要:publicabstractclassBaseMVPActivity···省略代码····mPresenter=TUtil.getT(this,0);mModel=TUtil.getT(this,1);···省略代码····我尝试使用kotlin去写这个util类:classKClassUtil{companionobject{inlinefungetKType(K:Any,position:Int):T{varparameterizedType=K::class.java.genericSuperclassasParameterizedTypevaractualTypeArguments=parameterizedType.actualTypeArgumentsreturn(actualTypeArguments[position].javaClassasClass).newInstance()}}}//调用者只需要:abstractclassBaseMVPActivity<T:BasePresenter,E:BaseModel>:BaseActivity()···省略代码····mPresenter=KClassUtil.getKType(this,0)//这里报错了mModel=KClassUtil.getKType(this,1)//这里报错了···省略代码····Cannotuse'T'asreifiedtypeparameter.Useaclassinstead.这里kotlin中一定要我写入具体的Class,但由于这里是抽象类无法知道具体的class是什么,请问如何解决这个问题?
侃侃尔雅
阿波罗的战车
相关分类