kotlin - 在 Kotlin 中,是否有一种安全的方法来执行 ObjectInputStream.readObject?
问题描述
当我做
object_input_stream.readObject() as HashMap<Int, Int>
Intellij 抱怨这是来自Any!
. 有没有一种安全的方法来处理阅读ObjectInputStream
?
使用as?
也会显示警告:
解决方案
不,没有类型安全的方法可以做到这一点,因为编译器无法知道流包含什么类型的对象。
你已经告诉它它应该是 a HashMap<Int, Int>
,但它只有你的话。如果(例如由于错误)你错了怎么办?这将在运行时导致 ClassCastException。警告是提醒您注意这种可能性。
你如何处理这种可能性取决于你。显而易见的选择是:
- 用于
as?
将其安全地转换为可空值(然后测试或处理空值), catch
异常(然后采取适当的措施),或- 故意让异常被抛出给调用者(在这种情况下,您至少应该记录它,例如使用
@Throws
注释)。
推荐阅读
- jenkins - 詹金斯:声明性管道中的未知阶段部分“矩阵”
- sql - SQL 问题:如果 Artikel 有多种艺术类型,但其中一种类型是“RS”,则将 Artikel 显示为“1”
- typescript - 动态导入 TypeScript 类型
- reactjs - 尝试使用 axios 从 Firebase 获取数据时出现错误
- linux - 如何从 azure 云连接到 linux 服务器并上传到 BLOB 存储?
- network-programming - 我的家用路由器给我的桥接 vm 适配器一个不同的动态 ip
- netsuite - 通过脚本调用 NetSuite 原生计算运费按钮?
- node.js - 猫鼬和快递的多租户
- javascript - 如何将 Vue/NuxtJs 与 Ezoic 集成?
- python - 在这种情况下,Python 是按引用传递还是按值传递,为什么?