我正在使用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无法解析”错误。当我改为导入Stream
时:java.util.stream;
事情按预期工作。为什么会这样?我不在我的程序中的其他地方使用Stream
或任何名为“stream”的东西,所以我不认为这是名称冲突?
答案 0 :(得分:4)
我怀疑你的第二次尝试(import java.util.stream;
)是否奏效。正如@JonSkeet指出的那样,它应该导致编译错误:error: cannot find symbol
。也许你想要import java.util.stream.*;
?
对于你的实际问题:
如果使用通配符导入,即星号(*
)字符,将仅导入此包中的直接类,而不导入子包中的类。因此,使用import java.util.*
,您可以导入ArrayList
,LinkedList
和Random
等类。可以找到完整列表here。类Stream
实际上位于子包java.util.stream
包中,并且在您import java.util.*;
时未导入。
要导入Stream
,您可以import java.util.stream.*;
(此软件包中的所有类)或仅import java.util.stream.Stream;
(您需要的类的FQDN)。