kotlin - 如何在 Kotlin 中安全地进行转换(无空转换)
问题描述
for (i in position until effectList.size) {
var holder = mRecyclerView.findViewHolderForAdapterPosition(i) as EffectsHolder
holder.bindEffect(holder.effect, i)
}
我的代码导致这样的空指针强制转换:
kotlin.TypeCastException: null cannot be cast to non-null type com.mobileer.androidfxlab.EffectsAdapter.EffectsHolder
因为mRecyclerView.findViewHolderForAdapterPosition(i)
返回null。mRecyclerView.findViewHolderForAdapterPosition(i)
仅当不为空时,如何有条件地强制转换?那我可以做holder?.bindEffect(holder.effect, i)
解决方案
Kotlin 允许您使用Safe (nullable) Cast Operator执行这样的转换:
val maybeString: String? = someObject as? String
所以在你的情况下,也许是这样的:
var holder = mRecyclerView.findViewHolderForAdapterPosition(i) as? EffectsHolder
holder?.bindEffect(holder?.effect, i)
推荐阅读
- angular - 使用 formControlName 时不显示选择中的占位符
- android - Android 应用程序卡视图的帧速率问题
- oracle - Oracle 数据泵(排除和元数据)
- python - 我的 Find Ladders 解决方案无法更新表示当前节点路径的列表
- azure-devops - 如何使用 Azure DevOps Release Pipelines 在 Azure Web App 的 wwwroot 目录外部署文件
- c# - 如何在 TreeView 中添加子节点?
- c# - 不可调用的成员 'Http SessionState.Timeout' 不能像方法一样使用
- javascript - mongo 查询超时,新 $project 字段上的 $match
- reactjs - 不知道为什么我的 redux 状态正在恢复?
- python - Mock 在 Python 2.7 的单元测试中不起作用