Java导入中的通配符如何工作?

dww*_*n66 4 java syntax import

我一直注意到我import的一些意想不到的结果,我希望能够理解真正发生的事情.我从以下开始:

import java.util.*;
import java.io.*;
import java.nio.*;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption.*;
import java.nio.file.Paths;
Run Code Online (Sandbox Code Playgroud)

然后发现,ArrayListListIterator没有工作......所以我说

import java.util.ArrayList;
import java.util.ListIterator;
Run Code Online (Sandbox Code Playgroud)

一切都很完美.

我会假设java.util.*也会导入ArrayListListIterator.为什么不呢?

我倾向于使用我的类/方法/变量名称过于冗长,并且我在程序的其余部分中找不到任何甚至接近保留字的内容.

我在文档中找不到任何可以解释为什么会发生这种情况的内容,而关于Stack的大多数讨论都是关于使用*与明确编码的导入进行优化.

任何人都有任何想法,我可以看看,以了解这种行为?

Mic*_*rry 6

import java.util.* 肯定是导入java.util.ArrayList和该包中的其他所有东西.请注意,没有子包的概念,因此它不会从java.util.x或导入任何内容java.util.y,但您的问题似乎并非如此.

如果代码不起作用,您必须在代码中遇到其他问题,导入语句肯定会按照您的描述运行.