我想深入克隆一个列表。为此,我们有一种方法
// apache commons method. This object should be serializable
SerializationUtils.clone ( object )
所以现在要克隆我的列表,我应该先将其转换为可序列化的。是否可以将列表转换为可序列化列表?
我想深入克隆一个列表。为此,我们有一种方法
// apache commons method. This object should be serializable
SerializationUtils.clone ( object )
所以现在要克隆我的列表,我应该先将其转换为可序列化的。是否可以将列表转换为可序列化列表?
Answers:
java.util.List已实施的所有标准实施java.io.Serializable。
因此,即使它java.util.List本身不是的子类型java.io.Serializable,也可以安全地将列表强制转换为Serializable,只要您知道它是诸如ArrayList或的标准实现之一LinkedList。
如果不确定,请先复制列表(使用new ArrayList(myList)),然后知道它是可序列化的。
SerializationUtils.clone()在type上需要一个参数Serializable,所以如果变量的类型是List,则需要强制转换。
List<MyClass> myObjs = new ArrayList<MyClass>();不符合Serializable,但ArrayList<MyClass> myObjs = new ArrayList<MyClass>();符合。
<T extends List<Foo> & Serializable> setFooList(T list),这要求调用者向您传递某些List实现的实例,该实现也是可序列化的。
如前所述,大多数标准实现List都是可序列化的。但是,您必须确保列表中引用/包含的对象也可以序列化。
List是不扩展的接口Serializable或任何不扩展的接口。List不可序列化的s在标准库中可能并不常见,但这并不能使第一句话正确。