Java:import语句与完全限定名称?

时间:2012-08-10 18:28:08

标签: java import

我尝试在网上和我自己的知识中找到答案,但我似乎无法找到明确,明确的答案。

假设我只使用另一个包中的一个类,只需要导入一次,比如myPack.anotherPackage.ClassName

使用 导入语句 之间有什么区别(

import myPack.anotherPackage.ClassName;

与使用 完全限定名称

myPack.anotherpackage.ClassName classInst = new myPack.anotherpackage.ClassName();

显然,这个问题仅适用于ClassName仅使用一次的情况。

7 个答案:

答案 0 :(得分:20)

导入语句 使您的代码更易于阅读,因为您不会使用完整的包将代码混乱。

如果存在ClassNames冲突,则只有在这种情况下才建议使用 完全限定名称

答案 1 :(得分:8)

没有,在我看来。看看字节码 - 没有区别。

 javap -c <your class>

答案 2 :(得分:4)

1。更多关于readability重要性的functional而不是

2。 import语句提供cleaner code而不是完整包名称以及 class或{{1}名字。

3。但是你必须在导入含糊不清的软件包时注意。

interface

然后您需要完整导入一个,并使用完整的包名称导入,如下所示

  `java.awt.List` and `java.util.List`

答案 3 :(得分:1)

编译代码后没有区别。在这两种情况下,字节代码都具有完全限定的名称,即类名由编译器自动替换为限定名。它只是为了让程序员生活简单,我们不必写完全限定的名字来引用一个类。

答案 4 :(得分:0)

据我所知,没有区别。唯一的区别是代码的冗长。一般来说,阅读越难越冗长。也许看一下字节码?

答案 5 :(得分:0)

没有真正的区别,特别是对于您在此引用的特定简单案例。见Java: Use import or explicit package / class name?

答案 6 :(得分:0)

导入和包用于命名和访问保护(默认) 简单的原因是可以有许多具有相同名称的类。

为了区分它们,我们需要在包装下将它们分开,并在需要时将它们导入。

导入类或直接键入完全限定名称没有区别,但是存在一些细微差别。  1.最重要的是如果你导入包中的所有类(即import xyz。*;) 这些类仍然可能存在命名问题,例如,如果有多个常规导入,则可能在运行时使用了错误的类。

  1. 如果在运行时动态加载类,例如在运行时注册JDBC驱动程序,则需要提供完全限定的类名作为参数,以便可以动态加载。
  2. 一般按照最佳做法使用:  1.永远不要使用import abc。*;导入格式并始终导入单个类(eclipse或某些IDE可以自动纠正导入到*并需要禁用它)  2.当您已导入同名类并希望在同一程序下使用同名的另一个类时,必须使用完全限定的类名。  希望它有所帮助:)