使用本机Java序列化存储和检索ArrayList<String>
等通用对象的最佳过程是什么?
编辑:澄清。当我序列化ArrayList<String>
类型的对象时,我想反序列化为相同类型的对象。但是,我知道无法在不引起警告的情况下强制退回此通用对象。
答案 0 :(得分:5)
我认为我理解这个问题,尽管可以不那么含糊地说明。当你反序列化时,你可以强制转换为原始ArrayList
,只要这不会抛出ClassCastException
你知道你得到了那个部分;但是如果你进一步转向ArrayList<String>
(或List<String>
),你会收到警告,告知这不安全。该集合可能包含整数,并且单独使用此强制转换将无法捕获它。
通常最好的做法是将您的序列化和反序列化代码小心地相互匹配,并抑制产生的警告。
答案 1 :(得分:1)
我认为你将会遇到不安全的强制转换警告 - 序列化只能处理最终存在于实际字节码中的对象的特征,并且(据我所知)编译器会删除泛型。反序列化机制的内容对通用参数没有任何了解。