Kotlin项目代码提示Unreachable code不可达报错是什么原因?
错误原因
- 语法格式错误:Kotlin 中单独成行的
return会直接结束函数执行、返回无意义的Unit值,写在它下一行的取值逻辑永远不会被触发,因此直接报「Unreachable code」错误。 - 函数定义不规范:你定义的两个方法没有声明返回值类型,默认返回
Unit,就算你把取值代码和return写在同一行,也会触发类型不匹配报错。
修复方案
将return和后续的取值表达式放在同一行,同时补充函数返回值类型即可,也可以直接使用 Kotlin 单表达式函数的简化写法,优化后的参考代码如下:
class Talk( val participantsId: ArrayList<String> ): BaseModel(), Serializable { var participants = ArrayList<Data>() val messages = ArrayList<Message>() // 常规写法,显式声明返回值类型 fun getProfilePicture(userId: String): String { return participants.find { it.id != userId }!!.profilePicture } // 单表达式简化写法,自动推导返回值类型 fun getTalkName(userId: String) = participants.find { it.id != userId }!!.username }
额外优化建议
你现在用的!!强转非空有风险,如果participants中找不到符合条件的用户会直接触发空指针崩溃,建议添加空安全处理,比如:
// 找不到用户时返回默认头像地址 fun getProfilePicture(userId: String): String { return participants.find { it.id != userId }?.profilePicture ?: "默认头像的本地路径/服务端地址" } // 找不到用户时返回默认会话名 fun getTalkName(userId: String): String { return participants.find { it.id != userId }?.username ?: "未知用户" }
内容的提问来源于stack exchange,提问作者user10991969
相关产品推荐
相关产品推荐

