Noob Java问题:
有人可以解释
之间的区别1. Queue<Integer> q = new LinkedList<Integer>() and
2. LinkedList<Integer> q = new LinkedList<Integer>()
在Java中?我假设在声明1中,我将无法使用LinkedList特定方法,并且只能使用Queue接口描述的方法。但是,我只是尝试了q.size()并发现它有效,尽管它不是Queue接口的一部分。
将这些对象作为参数传递是否有区别?有什么区别?
答案 0 :(得分:2)
Queue
实施Collection
,其中size()
方法。
正如您所指出的,这两个声明的区别在于可用的方法数量有限,并且允许使用更多实现类型 - 例如 - 方法参数。
答案 1 :(得分:1)
这是因为Queue接口实现了具有size()方法的Collection接口。
答案 2 :(得分:0)
不同之处在于,对于第一个,您正在编写一个接口,这为您提供了更大的实现灵活性。在这个例子中,这可能并不重要,但是当你创建具有许多相互关联的类的复杂程序并且需要简化连接并且允许能够独立于其他模块升级或增强一个模块时,它将更加重要。