以前写了一个用于排序的类private static class TypeNodeComparator implements Comparator{
// TODO
}一直都工作正常今天心血来潮,用FindBugs检查了一下,报告说有错,意思是说我没有实现Serializable接口改为:private static class TypeNodeComparator implements Comparator, Serializable {
// TODO
}后,再用FindBugs检查通过.在API中这样描述的:
注:通常来说,让 Comparator 也实现 java.io.Serializable 是一个好主意,因为它们在可序列化的数据结构(像 TreeSet、TreeMap)中可用作排序方法。为了成功地序列化数据结构,Comparator(如果已提供)必须实现 Serializable。我想请问一下,实现Serializable接口的目的是什么?如果不实现该接口的话会不会造成什么影响?
请知道的解释一下,最好能有例子演示一下 SUN 标称的"好主意".
// TODO
}一直都工作正常今天心血来潮,用FindBugs检查了一下,报告说有错,意思是说我没有实现Serializable接口改为:private static class TypeNodeComparator implements Comparator, Serializable {
// TODO
}后,再用FindBugs检查通过.在API中这样描述的:
注:通常来说,让 Comparator 也实现 java.io.Serializable 是一个好主意,因为它们在可序列化的数据结构(像 TreeSet、TreeMap)中可用作排序方法。为了成功地序列化数据结构,Comparator(如果已提供)必须实现 Serializable。我想请问一下,实现Serializable接口的目的是什么?如果不实现该接口的话会不会造成什么影响?
请知道的解释一下,最好能有例子演示一下 SUN 标称的"好主意".
比如,需要在网络中传输这个对象、要将这个对象写到文件里去什么的。如果不将对象序列化时,没有任何区别。最常见的就是使用ObjectOutputStream将对象序列化到文件中保存起来,便于今后再次使用,
这时这个类就必须实现Serializable接口,否则会被认为是不能序列化的,在其内部使用了
instanceof Serializable来进行检查。