java 。关键字<这个>。迭代器模式

标签 java design-patterns iterator this

今天学习了Iterator模式,但是有一段代码不太明白。你能帮我解决一下吗?

这是一个类:

public class Repository implements Container{
    public String[] names = {"John", "Iren", "Anthony", "Lorn"};

    @Override
    public Iterator getIterator() {
        return new MyIterator();
    }
    private class MyIterator implements Iterator {
        int index;
        @Override
        public boolean hasNext() {
             if (index < names.length) {
                 return true;
             }
             return false;
        }

        @Override
        public Object next() {
           if (this.hasNext()) {
               return names[index++];
           }
           return null;
        }
    }
}

主要方法:

public static void main(String[] args) {
        Repository name = new Repository();
        for (Iterator iter = name.getIterator(); iter.hasNext(); ) {
            String local = (String) iter.next();
            System.out.println("Name = " + local);
        }
    }

问题是关于方法next():

        @Override
        public Object next() {
           if (this.hasNext()) {
               return names[index++];
           }
           return null;
        }

我不明白关键字在这种情况下的含义。这是什么引用?

最佳答案

this 关键字是对您所在的非静态方法对象的引用。这里 this 位于 MyIterator 对象的 next() 方法内,因此 this 是对 code>MyIterator 对象。请注意,在提供的代码中,您可以省略 this. 并简单地编写 if(hasNext()) {...}

关于 java 。关键字<这个>。迭代器模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31222538/

相关文章:

java - gRPC Java : How to know if a client disconnects abruptly (server side)?

java - JAXB 和 JPA,关系

java - 使用 UNIX 文件系统的独立于平台的应用程序需要 File.isAbsolute()

c++ - 如何检查简单的 C++ 标准库迭代器是否可以被推进?

javascript - 将自定义迭代器添加到 javascript 类

java - 表示两个或多个因素之间的直接或反向关系的最佳 Guava (Google) 集合 API 是什么?

design-patterns - 全局常量是反模式吗?

algorithm - 哪种算法可用于检测时间模式?

c++ - 如何编写连接池?

c++ - 在 find_if 中使用仿函数