问题的出现
当时我正在写二叉树的层序遍历,利用了队列来实现的,我想用的是 java.util
包中的 Queue 接口和 LinkedList 泛型类,所以我就直接 import 了 java.util
包:
然而呢,当我写完了之后,发现了这个问题:Cannot infer type arguments for LinkedList<>;不能确定 LinkedList 的类型,我明明在Queue后加了明确的类型,有点抓头了:
百度了一下,多是一些泛型无法使用之类的,连我都有点忽略这个细节了:在我的包中,自己定义了一个 Queue 接口,和 JDK 中的 Queue 重名了,然后将引包的方式具体化了,问题解决:
import引包的细节
包的出现本来就是为了防止同名类混淆,同一个包中不允许出现同名类;我们引包的方式有两种:
- 使用完整的包名: import java.util.Queue;
- 使用通配符来引入一个包中的多个类: import java.util.*;
Tips: 如果本地类库中的类 和 其它类库中的类重名,请使用完整的包名;若使用通配符,则就会自动使用本地类库中的类。