首页 > 解决方案 > 接口方法如何在没有主体定义的情况下在 Java 中执行功能?

问题描述

例如, Iterator 接口中hasNext()next()方法通过检查集合中是否存在下一行/对象并分别返回下一个对象来执行其功能,而不覆盖方法。

请帮我理解。

下面的示例代码片段:

import java.io.*;
import java.util.*;

class Test {
    public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<String>(); 

        list.add("A"); 
        list.add("B"); 
        list.add("C"); 
        list.add("D"); 
        list.add("E"); 

        // Iterator to traverse the list 
        Iterator iterator = list.iterator(); 

        System.out.println("List elements : "); 

        while (iterator.hasNext()) 
            System.out.print(iterator.next() + " "); 

        System.out.println(); 
    } 
}

标签: javaobjectcollectionsinterfaceiterator

解决方案


接口方法执行功能,这就是接口的全部意义所在。它们指定了实现它们的类必须满足的契约。

阅读以下文档Iterator#hasNext

 * Returns {@code true} if the iteration has more elements.
 * (In other words, returns {@code true} if {@link #next} would
 * return an element rather than throwing an exception.)
 *
 * @return {@code true} if the iteration has more elements

接口所说的就是实现它的任何类必须做的事情。如何由实现它的类决定,因此完成检查的机制由实现 Iterator 的任何类决定。

在您的示例中,迭代器在

java.util.ArrayList.Itr


推荐阅读