4

我一直注意到我import的 s 出现了一些意想不到的结果,我希望了解真正发生的事情。我从以下内容开始:

import java.util.*;
import java.io.*;
import java.nio.*;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption.*;
import java.nio.file.Paths;

然后发现ArrayListListIterator没有用......所以我添加了

import java.util.ArrayList;
import java.util.ListIterator;

一切正常。

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

我倾向于对我的类/方法/变量名称过于冗长,并且在程序的其余部分中我没有找到任何接近保留字的内容。

我在文档中找不到任何说明为什么会发生这种情况的内容,而且关于 Stack 的大部分讨论都是关于使用 * 与显式编码导入的优化。

任何人都知道我还能看什么来了解这种行为?

4

2 回答 2

6

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

如果代码不起作用,您的代码肯定有其他问题,导入语句的行为肯定与您描述的一样。

于 2012-04-25T11:46:17.900 回答
0

我在eclipse中试过。

import java.util.*;

这两个类都不需要再次导入。

import java.util.ArrayList;
import java.util.ListIterator;

因为通配符 * 表示导入所有子类和包(记住不是包子类)

如果你进口

import java.util.*;

我将导入java.util.jar包但不导入 jar 子类:)

于 2012-04-25T11:47:17.657 回答