使用 import java.util.* 是不可取的吗? [复制]

Posted

技术标签:

【中文标题】使用 import java.util.* 是不可取的吗? [复制]【英文标题】:Is using import java.util.* undesirable? [duplicate] 【发布时间】:2014-11-13 11:50:34 【问题描述】:

正在使用

 import java.util.*

与调用特定软件包相比不利于吗?我想知道它对于调用所有包的程序是否显着效率低下,而不是专门列出它们,例如:

 import java.util.Scanner;
 import java.util.Math;

等等。我正在准备面试,并希望确保我有良好的编码习惯。

【问题讨论】:

这是否回答了您的问题:***.com/questions/147454/…? 是的。谢谢你。我想知道面试官是否会不理解我正在使用 import java.util.*? (因为我可能会处理一个小程序) 如果您要在纸上编写代码,那么我会说使用通配符 * 是可以的(您可以在每个 * 附近留下评论,以描述您将使用该包中的哪些类用于表明不会与其他* 发生冲突),如果您能够使用IDE,则更喜欢显式导入(Eclipse 可以使用Ctrl+Shift+O 为您组织它们)。 这是有道理的。谢谢。 【参考方案1】:

导入 * 的问题在于它增加了命名冲突的机会。

假设在您的程序中,您有一个名为 EventListener 的类,因为 java.util 也有一个名为 EventListener 的类,就像您要处理一些冲突一样,但您甚至不在乎java.util.EventListener 在这种情况下。

这确实可以避免,只需不导入 * 而只导入真正需要的特定类。

【讨论】:

我有时会遇到麻烦,导入带有星号的java.awtjava.util 包,然后尝试使用java.util 包的List 接口,忘记了@ 987654329@ 类存在于java.awt 包中。编译器将无法判断您是否要使用一个包中的类/接口。 @TNT 在这种情况下,除了.* 通配符之外,您可以添加要使用的List 的显式导入,例如import java.awt.*; import java.util.*; import java.util.List;(最后一次导入将让编译器确定List 应该从哪个包中导入使用)。 @Pshemo 这是一个很好的观点。在这些情况下,我通常只是将包名放在类名前面,即java.util.List list ...【参考方案2】:

@PeterPeiGuo 是对的,除此之外,我想说我不使用 import xxx.xx.*,因为作为开发人员,您需要知道应该使用哪个类和不应该使用哪个类。您需要了解代码/应用程序的所有内容。所以我认为 import xxx.xx.XXX 更好。

【讨论】:

以上是关于使用 import java.util.* 是不可取的吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

eclipse中加入import java.util.*;后出错 提示从未使用导入java.util是啥情况?

使用 import java.util.* 是不可取的吗? [复制]

java里面import java.util.*;是啥用处?

Java多线程之Lock的使用

如何使用 Weld 注入不可序列化的类(如 java.util.ResourceBundle)

import java.util.*; List<String> list=new ArrayList<String>(); 错误:类型List不带有参数