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



我正在使用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.*,我们导入像ArrayListLinkedListRandom这样的类。 完整列表可以在这里找到。类Stream实际上驻留在子包java.util.stream中,并且在import java.util.*;时不会导入。

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

最新更新