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

时间:2011-04-27 13:25:28

标签: java class inheritance package

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

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

或预先导入课程:

import javax.swing.JFrame;

public class LineTest extends JFrame {
...

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

3 个答案:

答案 0 :(得分:21)

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

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

答案 1 :(得分:8)

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

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

答案 2 :(得分:3)

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