为什么集合类没有实现Cloneable和Serializable接口?
问 get新技能了
答
-
集合类接口Collection,List,Set,Map定义了自己集合类的抽象即可,如果接口的设计也要考虑是否可以克隆,串行化等一堆额外特性,那是不是还要额外考虑是否可以Closeable, 接口就不是基于抽象,不是纯粹的接口了。
-
对于具体的实现类, java.util.ArrayList,LinkedList,HashMap,HashSet, 有什么特性就实现什么接口,可以实现多个接口即可。实际这些类都实现了Cloneable和Serializable接口,因为实际应用中集合类很常用,串行化和克隆也常用。
public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable; public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable; public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable; public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable;