簡體   English   中英

安卓通用參數

[英]Android Generic Parameter

大家好,我在傳遞參數時遇到了一些問題。 我有 2 個 API 調用,如果設備沒有互聯網連接,我需要將調用傳遞回另一個類,因為每個 api 都有不同的 pojo,android 給我警告不匹配類型。 這是我的代碼

 override fun initRetrofitCarList(call: Observable<Response<MyCarModel>>) {
    compositeDisposable.add(call
            .map{
              it.body()
            }
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe({
                if (it.status == Constants.Result.SUCCESS) {
                    mPresenter.successGetVehicleList(it.vehicle, "api")
                } else {
                    mPresenter.failedGetVehicleList(it.message)
                }
            }, {
                mPresenter.onNoConnection(call) <- this here will give WARNING because of mismatch type
            }))
}

override fun initRetrofitBikeList(call: Observable<Response<MyBikeModel>>) {
    compositeDisposable.add(call
             .map{
              it.body()
            }
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe({
                if (it.status == Constants.Result.SUCCESS) {
                    mPresenter.successGetVehicleList(it.vehicle, "api")
                } else {
                    mPresenter.failedGetVehicleList(it.message)
                }
            }, {
                mPresenter.onNoConnection(call) <- this here will give WARNING because of mismatch type
            }))
}

如何讓函數的參數進行泛型調用?

編輯

 override fun onNoConnection(//need to be generic) {
    mView.dismissProgressDialog()
    mView.showRetryDialog(call)
}

只需通過在函數名之前放置 T 來聲明函數將接收泛型,showRetryDialog 函數也必須是泛型的,否則將泛型類型轉換為預期類型(不安全的類型轉換)

override fun <T> onNoConnection(call :Observable<Response<T>>){
            mView.dismissProgressDialog()
            mView.showRetryDialog(call)
}

好吧,您對兩種方法的調用定義不同:

· 在initRetrofitCarList()調用是Observable<Response<MyCarModel>>

· 在initRetrofitBikeList()調用是Observable<Response<MyBikeModel>>

因此,當您將此調用傳遞給另一個函數時,您需要請求通用Observable<Response<T>>作為參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM