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

Mic*_*ael 11 java inheritance class package

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

public class LineTest extends javax.swing.JFrame {
...
Run Code Online (Sandbox Code Playgroud)

或预先导入课程:

import javax.swing.JFrame;

public class LineTest extends JFrame {
...
Run Code Online (Sandbox Code Playgroud)

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

Jes*_*per 22

没有真正的区别; 生成的字节代码将完全相同.一种import说法是真的只是一种方式来告诉编译器"当我写JFrame,我实际上意味着javax.swing.JFrame".

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


Mic*_*rdt 8

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

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