我正在读一本关于让代码更简洁、更易读的书。
事实是,看书中的一段代码,出现了一个以星号结尾的 Java 包,他们就是这样写的import java.util.*
。我总是看到以,或import java.util
结尾的包。arraylist
scanner
date
我的疑问是星号表示或表示什么?它有什么用?
我正在读一本关于让代码更简洁、更易读的书。
事实是,看书中的一段代码,出现了一个以星号结尾的 Java 包,他们就是这样写的import java.util.*
。我总是看到以,或import java.util
结尾的包。arraylist
scanner
date
我的疑问是星号表示或表示什么?它有什么用?
Java 导入中的星号有两个功能,尽管它们可以概括为一个: 使集合的所有成员可见,而不必使用它们的全名(标识符)。
1. 从包中导入:
这是你给出的例子。如果您必须制作一个使用不同集合(Set、Map、List)和/或其他常用类或接口的小型应用程序,并且您没有使用 IDE 来创建它,那么编写它非常方便:
而不是繁琐的列表:
如果您使用的是 Eclipse、IntelliJ 或 Netbeans 之类的 IDE,我建议您在使用时键入类名,点击Ctrl+ ,espacio然后让自动完成功能发挥作用,自动包括每个类的必要导入。这样可以避免不必要的冲突。例如,如果您有:
你会发现一次导入了两个 Date 类!
2.从类导入:
Java 中还有第二种类型的导入,即静态导入,在这种情况下,您导入的是类的静态方法和属性:
在这种情况下,不太可能发现冲突,因为我们通常不会在同一个类中导入超过一两个静态类。
和
您导入所有依赖于
java.util
. 而如果您只引用一个,则只会导入该特定的一个。例如import
参加您需要的课程之一总是更好。否则,我们有时会发现自己存在不必要的命名冲突。性能仅(最小)受编译影响,对执行没有负面影响。当您在 a 末尾使用星号时
import
,您会导入其中的所有类,但不建议使用它,因为它可能会在编程时引起问题,或者如果您想重用代码,因为它可能会与其他import
. 例如:正因为如此,Java 1.2 添加了 util 并包含 List 以及 awt,因此存在冲突。确实可以“修复”它,因为如果您将另一个导入的 util 指定 List 它不应该出现问题,但这已经是每个人的意见,并且在我的情况下必须执行 import import.* 然后必须指定阶级失去了他的观点。
在编译中它不会消耗你太多,只要它不是一个巨大的代码并且它充满了带星号的导入。
正如你所指出的,你在一个例子中看到了它,他们可能把它放在使它更具可读性。我希望我有所帮助。
前面的答案中没有提到一些东西,这对我来说似乎很重要:当我们使用 * 时,我们只导入指定包的类,而不是可能的子包之一。
例如,假设我们要使用 java.util.stream 包中的 Collectors 类。
由于该类位于流子包中,因此以下内容不起作用。
然后有必要在包层次结构中导航,直到到达找到所需类的级别。
任何一个
在包含前两个导入中的任何一个之后,我们将看到该类。