import java.util.*; 和 import java.util.* 有什么区别?并导入 java.util.stream;?

Ada*_*dam -1 java import

我正在使用 Java 8 的Stream功能来操作程序中数组的内容:

Obstacle[] closestObstacles = Stream.generate(() -> new Obstacle()).limit(8).toArray(Obstacle[]::new); // one for each line of attack
Run Code Online (Sandbox Code Playgroud)

当我尝试这样导入时Streamimport java.util.*;出现“无法解析符号流”错误。当我Stream像这样导入时:java.util.stream;事情按预期工作。为什么会发生这种情况?我没有Stream在程序的其他地方使用或任何名为“stream”的东西,所以我认为这不是名称冲突?

Tur*_*g85 7

我怀疑第二次尝试 ( import java.util.stream;) 是否有效。作为JonSkeet指出,在他们的评论,它应该导致编译错误:error: cannot find symbol。也许你想import java.util.stream.*;


对于实际问题:

如果我们用通配符导入,也就是星号( *) 字符,只会导入这个包中的直接类,而不导入子包中的类。因此,使用 an import java.util.*,我们导入了ArrayList,LinkedList和等类Random。可以在此处找到完整列表。该类Stream实际上驻留在子包中,java.util.stream并且在您import java.util.*;.

要导入Stream,我们可以import java.util.stream.*;(此包中的所有类)或仅import java.util.stream.Stream;(我们需要的类的 FQDN)。