Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Iterable<;键>;作为返回类型,这意味着什么?_Java_Interface_Return - Fatal编程技术网

Java Iterable<;键>;作为返回类型,这意味着什么?

Java Iterable<;键>;作为返回类型,这意味着什么?,java,interface,return,Java,Interface,Return,我正在阅读有关sequentialsearch实现的信息 ,发现了一些毫无意义的东西(或者至少在我看来是这样) public Iterable key(){ 队列=新队列(); for(节点x=first;x!=null;x=x.next) queue.enqueue(x.key); 返回队列; } 方法如何返回接口?我们不应该返回类/基元类型吗?这是多态性的一个例子。 意味着可以从此方法返回对实现接口的任何类的对象的引用 此设计用于方法被子类重写的情况。 方法签名表示所有重写此方法的子类都应

我正在阅读有关sequentialsearch实现的信息 ,发现了一些毫无意义的东西(或者至少在我看来是这样)

public Iterable key(){
队列=新队列();
for(节点x=first;x!=null;x=x.next)
queue.enqueue(x.key);
返回队列;
}

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

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

此设计用于方法被子类重写的情况。
方法签名表示所有重写此方法的子类都应返回其在方法签名中提到的接口的特定实现的约定。

返回接口的方法
意味着您可以返回实现该接口的任何类的实例。

不仅可以方法返回一个接口,它应该

调用该方法的客户机可能需要一个
Key
s的“组”(我使用该词是为了避免与语言无关,并避免与set/list/collection之类的东西发生冲突),他可以遍历并使用该组。如果他所需要做的就是遍历它们,那么给他一个
Iterable
。然后,作为
keys()
方法的维护者,您可以随着时间的推移自由地对其进行改进,以便在幕后使用不同的、可能更高效的实现。客户机将很高兴地不知道您的实现更改


这是一个非常重要的OO设计范例,您可以并且应该将其内部化:

为什么它不能将接口作为其返回类型?那么这意味着什么?返回的对象必须实现该接口?从技术上讲,是对实现该接口的任何类的对象的引用,或者为null。@GauravPal如果您再解释一下关键词,我很乐意投您的赞成票
    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;
}