【问题标题】:Java: Use import or explicit package / class name?Java:使用导入或显式包/类名?
【发布时间】:2011-08-13 20:58:27
【问题描述】:

我正在编写一个非常基本的应用程序,扩展 Swing JFrame。显式引用有什么区别:

public class LineTest extends javax.swing.JFrame {
...

或预先导入类:

import javax.swing.JFrame;

public class LineTest extends JFrame {
...

您何时(以及为什么)会使用一种技术而不是另一种?

【问题讨论】:

    标签: java class inheritance package


    【解决方案1】:

    没有真正的区别;生成的字节码将完全相同。 import 语句实际上只是告诉编译器“当我写 JFrame 时,我实际上是指 javax.swing.JFrame”的一种方式。

    如果您在不同的包中有两个具有相同名称的类,您可能希望使用完全限定的包名。标准库中的一个常见示例是 java.util.Date 和 java.sql.Date 类。

    【讨论】:

      【解决方案2】:

      唯一的区别在于源代码。使用完全限定名称会导致代码的可读性降低,因此每个人都几乎只使用导入。我唯一见过一致使用的完全限定名称的地方是在生成的代码中。

      在常规代码中使用完全限定名称的唯一原因是当您必须使用具有相同简单名称的两个类时(例如 java.util.List 和 java.awt.List) - 在这种情况下,别无选择。

      【讨论】:

        【解决方案3】:

        对于编译器来说没有任何区别。使用全限定名的缺点是每次使用类时都必须编写它。如果我在不同的包中有两个同名的类,我只使用完整的限定名。这样你就可以区分这两个类

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-11-24
          • 1970-01-01
          • 2018-08-14
          • 1970-01-01
          相关资源
          最近更新 更多