[英]Why does the Java compiler complain about explicit import name conflicts but not import package.*?
[英]Java: Use import or explicit package / class name?
我正在编写一个非常基本的应用程序,扩展 Swing JFrame。 明确引用之间有什么区别:
public class LineTest extends javax.swing.JFrame {
...
或预先导入 class :
import javax.swing.JFrame;
public class LineTest extends JFrame {
...
您何时(以及为什么)会使用一种技术而不是另一种技术?
没有真正的区别; 生成的字节码将完全相同。 import
语句实际上只是告诉编译器“当我写JFrame
时,我实际上是指javax.swing.JFrame
”的一种方式。
如果您在不同的包中有两个具有相同名称的类,您可能希望使用完全限定的 package 名称。 标准库中的一个常见示例是类java.util.Date
和java.sql.Date
。
唯一的区别在于源代码。 使用完全限定名称会导致代码的可读性降低,因此每个人都几乎只使用导入。 我见过一致使用的完全限定名称的唯一地方是在生成的代码中。
在常规代码中使用完全限定名称的唯一原因是当您必须使用具有相同简单名称的两个类时(例如java.util.List
和java.awt.List
) - 在这种情况下没有其他选择。
对于编译器,它没有任何区别。 使用全限定名的缺点是每次使用 class 时都必须编写它。 如果我在不同的包中有两个同名的类,我只使用完整的限定名。 这样你就可以在这两个类之间有所不同
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.