Java:使用import或显式包/类名?

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

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

或预先导入课程:

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

何时(和为什么)你会使用一种技术而不是另一种?

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

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

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

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

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