我想深入克隆一个列表。为此,我们有一种方法
// 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在标准库中可能并不常见,但这并不能使第一句话正确。