我尝试在网上和我自己的知识中找到答案,但我似乎无法找到明确,明确的答案。
假设我只使用另一个包中的一个类,只需要导入一次,比如myPack.anotherPackage.ClassName
。
使用 导入语句 之间有什么区别(
)import myPack.anotherPackage.ClassName;
与使用 完全限定名称 :
myPack.anotherpackage.ClassName classInst = new myPack.anotherpackage.ClassName();
?
显然,这个问题仅适用于ClassName
仅使用一次的情况。
答案 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.永远不要使用import abc。*;导入格式并始终导入单个类(eclipse或某些IDE可以自动纠正导入到*并需要禁用它) 2.当您已导入同名类并希望在同一程序下使用同名的另一个类时,必须使用完全限定的类名。 希望它有所帮助:)