Iterable <key>作为返回类型,这是什么意思?</key>

时间:2015-02-05 03:04:03

标签: java interface return

我正在阅读有关顺序搜索实现SequentialSearch ,发现了一些没什么意义的东西(或者至少在我看来似乎是这样)

    public Iterable<Key> keys()  {
    Queue<Key> queue = new Queue<Key>();
    for (Node x = first; x != null; x = x.next)
        queue.enqueue(x.key);
    return queue;
}

方法如何返回接口?我们不应该返回类/基元类型吗?

3 个答案:

答案 0 :(得分:5)

这是多态性的一个例子。 意味着可以从此方法返回对实现接口的任何类的对象的引用。

如果方法要被子类覆盖,则使用此设计。 方法签名表示一个合同,所有重写此方法的子类都应返回方法签名中提到的接口的特定实现。

答案 1 :(得分:1)

不仅可以该方法返回一个界面,应该

调用该方法的客户可能需要一个&#34;组&#34; (我使用那个词是语言不可知的,并避免与像{/ 1}}这样的东西发生冲突)Key s,他可以迭代并做事。如果他需要做的就是遍历它们,那就给他一个Iterable。然后,作为keys()方法的维护者,您可以随着时间的推移自由地发展它,以便在封面下使用不同的,可能更高效的实现。客户将幸福地意识不到您的实施变化。

这是你可以而且应该内化的最重要的面向对象设计范例之一:program to interfaces, not implementations

答案 2 :(得分:0)

A method returning an interface表示您可以返回实现该接口的任何类的实例。