【问题标题】:Why is Serializable declared with fully qualified name in JDK classes?为什么在 JDK 类中使用完全限定名称声明 Serializable?
【发布时间】:2012-02-17 06:04:45
【问题描述】:

这可能有点无意义的问题,但是在浏览各种JDK类的源代码时,我看到当一个类实现java.io.Serializable接口时,它通常用一个完全限定的名称来引用它,而不是使用导入,比如如:

public class ArrayList<E> extends AbstractList<E>
    implements List<E>, RandomAccess, Cloneable, java.io.Serializable

这有什么具体原因吗?这与旧 JDK 1.0 中已弃用的类 sunw.io.Serializable 的存在有任何关系吗?

【问题讨论】:

  • 我相信您对sunw.io.Serializable 的看法是正确的,作者想明确表示他们的意思是java.io.Serializable。例如 Cloneable 在 JDK 中没有同名的对应物,所以它没有意义。
  • 询问该代码的作者。使用 Serializable 的完全限定名称(根据我的经验)是不正常的。
  • @Steve Kuo:你说我应该给乔什·布洛赫写一封电子邮件? :)

标签: java serializable


【解决方案1】:

随意导入所有内容通常被认为是一种糟糕的形式。使用完全限定的类型名称(包括java.io.Serializable 和异常),减少了对导入的需求并检查这些类型的来源。

【讨论】:

  • 如果有人不导入所有东西,尤其是众所周知的 JDK 类,你能给出任何论点或例子吗?只有在我看来有意义的情况是 java.sql.Date 之类的类,人们希望明确避免与标准 java.util.Date 混淆。 (我没有提到静态导入,如果滥用它们实际上可能会引起一些混乱。)
猜你喜欢
  • 2023-03-09
  • 2019-10-09
  • 1970-01-01
  • 1970-01-01
  • 2015-02-23
  • 2011-10-02
  • 2014-08-01
  • 2023-03-24
  • 2013-06-21
相关资源
最近更新 更多