android - Android 通用参数
问题描述
大家好,我在传递参数时遇到了一些问题。我有 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)
}
推荐阅读
- python - 如何切片熊猫 MultiIndex df 保留所有值直到满足特定条件?
- c# - .NET Core RedirectToAction 导致 InvalidOperationException 错误
- java - PreparedStatement 中没有包含 2 个对象的结果“In”子句
- javascript - Angular 7:如何为延迟加载的路由器创建单元测试
- postgresql - 在 Postgres 中更改 JSONB 列中的值类型
- reactjs - 画布上超长文本的多行拆分(添加换行符)
- excel - Excel 文件大小为 23MB,只有 9 个数据整体和一个 VBA 脚本
- php - 我收到错误 FatalThrowableError 类型错误:传递给 Illuminate\Http\Request::merge() 的参数 1 必须是数组类型,给定 null
- android - 在它上调用方法与在 ?.let body 中引用之间的区别
- javascript - 基于动态传递的属性从对象数组中获取唯一值