1

菜鸟Java问题:

有人可以解释一下

1. Queue<Integer> q = new LinkedList<Integer>() and
2. LinkedList<Integer> q = new LinkedList<Integer>()

在 Java 中?我假设在声明 1. 中,我不能使用 LinkedList 特定的方法,只能使用 Queue 接口描述的方法。但是,我只是尝试了 q.size() 并发现它有效,尽管这不是 Queue 接口的一部分。

将这些对象作为参数传递有区别吗?有什么不同?

4

3 回答 3

3

Queueimplements Collection,它有一个size()方法。

正如您所指出的,这两个声明的区别在于,可用的方法数量有限,并且允许更多实现类型 - 例如 - 方法参数。

于 2013-07-07T00:12:47.383 回答
1

这是因为 Queue 接口实现了具有 size() 方法的 Collection 接口。

于 2013-07-07T00:12:26.010 回答
0

不同之处在于,与第一个相比,您正在对一个接口进行编码,这为您在实现中提供了更大的灵活性。在这个例子中它可能不那么重要,但是当你创建具有许多相互关联的类的复杂程序并且需要简化连接并允许升级或增强一个模块与其他模块隔离时,它会更重要。

于 2013-07-07T00:20:55.443 回答