java - 为什么我们每次都使用前缀 "java.io."而不导入java.io.Serialized接口(interface)

标签 java serialization import

我的问题不是关于理解可序列化接口(interface)的使用的技术理解。 这些答案已经解释过[1] & [2]其中others

我的问题是从语法的角度来看的。

在查看Collection接口(interface)及其子接口(interface)的源代码时,我注意到大多数接口(interface)都实现了Cloneablejava.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)中所做的那样。

最佳答案

您提到的类(TreeSetLinkedHashSet 等)根本没有任何导入,并且如果属于其他包,则始终使用完整的类名比 java.langjava.util

我想说这是一种不好的做法,但我们不能责怪乔什·布洛赫先生:)

关于java - 为什么我们每次都使用前缀 "java.io."而不导入java.io.Serialized接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27962968/

相关文章:

java - MongoDriver UUID 支持

java - 标准、独立子查询、分组依据和拥有更多

JAVASCRIPT 值到 JSP 变量

java - jooq getValue(String fieldName) 不同表中同名的列

mysql - Docker compose不执行.sql

mysql - 迁移sqlite到mysql(guid类型问题)

javascript - 基于 webpack 配置为 cli 参数动态导入模块

C++ 添加用于序列化 vector 对的自定义 XML 标记

java - 为什么 Java 的序列化比 3rd 方 API 慢?

c# - Protobuf-net 中没有为类型 : System. Management.Automation.PSObject 定义序列化器