先上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是什么,請問如何解決這個問題?
急求?。。。ava中如何實例化類?
白豬掌柜的
2019-06-12 08:50:45