Why should a Comparator implement Serializable?
Java新手。 在Android应用程序上工作时进行学习。 我正在实现一个Comparator来对文件列表进行排序,而android docs说一个Comparator应该实现Serializable:
It is recommended that a Comparator implements Serializable.
这是此处的可序列化接口。
我只想对文件列表进行排序。 我为什么要实施此方法,或者为什么对任何比较器都应采用该方法?
这不仅是Android的事情,Java SDK也有相同的建议:
Note: It is generally a good idea for comparators to also implement java.io.Serializable, as they may be used as ordering methods in serializable data structures (like TreeSet, TreeMap). In order for the data structure to serialize successfully, the comparator (if provided) must implement Serializable.
因此,想法是因为TreeMap可序列化,并且TreeMap可以包含Comparator,所以如果Comparator也可序列化将是很好的。集合中的所有元素也是如此。
您可以放心地忽略它,除非您以这种方式使用序列化。
可序列化是一个空白接口。它不包含任何方法。因此,要实现它,您只需要在类中说
当某些东西实现
现在,为什么
这应该可以帮助您:http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html
Note: It is generally a good idea for comparators to implement java.io.Serializable, as they may be used as ordering methods in serializable data structures (like TreeSet, TreeMap). In order for the data structure to serialize successfully, the comparator (if provided) must implement Serializable.
blockquote>
要序列化Java中的对象,必须满足以下两个条件:
实例所属的类必须实现java.io.Serializable。 该类的成员应可序列化。如果一个或多个成员不被序列化,则应将其标记为瞬态。 当任何数据结构使用比较器并且您希望该数据结构可序列化时,第2点(如上所述)将迫使比较器实现可序列化。
我已经在Java 5 API中看到了
链接到Java 5 APT
其中指出,实施Comparator并不意味着一定要实现Serializable接口,因此必须明确注意要在某些习惯创建的Comparator类中获取Serializable