gpt4 book ai didi

Java - 是否可以在不强制转换的情况下读取序列化对象?

转载 作者:行者123 更新时间:2023-11-30 06:51:49 27 4
gpt4 key购买 nike

我正在从序列化文件中读取对象,我真的不喜欢我必须转换结果的事实,例如

vars = (HashMap<String, Integer>) out.readObject();

因为我讨厌类型转换,所以我是类型信息的粉丝。是否可以避免它并明确告诉应该从序列化文件中读取什么类型?

最佳答案

ObjectInputStream不是泛型类型,也不提供泛型方法。

read[primitive]有具体方法提供,但对于实际对象,仅 readObject提供 - 返回 Object .

当然,如果你不需要使用Java自带的SerializableExternalizable接口(interface)并且宁愿使用特定框架(例如 Jackson)进行序列化,您可以利用不需要在反序列化时显式向下转换的方法。

注意

ObjectInputStream不是 final ,并且您可以扩展它以提供您自己的实现,这可以允许您提供通用类或方法并在调用某些 readTypedObject 时防止强制转换。自己的方法。

然后您可以比较 readClassDescriptor()Class<T>你自己初始化了ObjectInputStream实现,以确保正在读取的对象可以分配给您的参数化类型。

但是,您最终会转换为 T无论如何,在某些时候,因为您可能不想覆盖 readObject也!

TL;DR,在我看来太多的努力和复杂性,我只想在接收端进行转换。

关于Java - 是否可以在不强制转换的情况下读取序列化对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39877667/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com