我的问题不是关于理解可序列化接口(interface)的使用的技术理解。 这些答案已经解释过[1] & [2]其中others
我的问题是从语法的角度来看的。
在查看Collection接口(interface)及其子接口(interface)的源代码时,我注意到大多数接口(interface)都实现了Cloneable
和java.io.Serialized
,如下所示:
public class TreeSet<E> extends AbstractSet<E>
implements NavigableSet<E>, Cloneable, java.io.Serializable{
...
}
public class LinkedHashSet<E>
extends HashSet<E>
implements Set<E>, Cloneable, java.io.Serializable {
...
}
public class HashSet<E>
extends AbstractSet<E>
implements Set<E>, Cloneable, java.io.Serializable {
...
}
...等等
我还注意到:
Collection
接口(interface)、TreeSet
LinkedHashSet
等属于package java.util;
Cloneable
接口(interface)属于package java.lang;
可序列化
属于包java.io;
现在我的问题是为什么我们在 Serialized
之前添加前缀 java.io
(如上所示)而不是 import import java.io.Serialized;
就像在 Collection 接口(interface)中所做的那样。
最佳答案
您提到的类(TreeSet
、LinkedHashSet
等)根本没有任何导入,并且如果属于其他包,则始终使用完整的类名比 java.lang
或 java.util
我想说这是一种不好的做法,但我们不能责怪乔什·布洛赫先生:)
关于java - 为什么我们每次都使用前缀 "java.io."而不导入java.io.Serialized接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27962968/