我正在使用Java 8的Stream
功能来操作程序中数组的内容:
Obstacle[] closestObstacles = Stream.generate(() -> new Obstacle()).limit(8).toArray(Obstacle[]::new); // one for each line of attack
当我尝试导入这样的Stream
时:import java.util.*;
我收到"无法解析符号流"错误。当我改为像这样导入Stream
时:java.util.stream;
事情按预期工作。为什么会这样?我不在我的程序其他地方使用Stream
或任何名为"流"的东西,所以我认为这不是名称冲突吗?
我怀疑第二次尝试(import java.util.stream;
(是否有效。正如JonSkeet在他们的评论中指出的那样,它应该会导致编译错误:error: cannot find symbol
。也许你想import java.util.stream.*;
?
对于实际问题:
如果我们使用通配符(即星号(*
(字符(导入,则只会导入此包中的直接类,而不会导入子包中的类。因此,对于import java.util.*
,我们导入像ArrayList
、LinkedList
和Random
这样的类。 完整列表可以在这里找到。类Stream
实际上驻留在子包java.util.stream
中,并且在import java.util.*;
时不会导入。
要导入 Stream
,我们可以import java.util.stream.*;
(此包中的所有类(或仅import java.util.stream.Stream;
(我们需要的类的 FQDN(。