![](/img/trans.png)
[英]Does Android Java support primitive type parameter for generic types?
[英]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.