首页 > 编程笔记 > Java笔记 阅读:30

迭代器模式在MyBatis源码中的应用

迭代器模式在 MyBatis 中也是必不可少的,下面来看 DefaultCursor 类,源码如下。
public class DefaultCursor<T> implements Cursor<T> {
    ...
    private final CursorIterator cursorIterator = new CursorIterator();
    ...
}
DefaultCursor 实现了 Cursor 接口,且定义了一个成员变量 cursorIterator,其类型为 CursorIterator。

继续查看 CursorIterator 类的源码实现,它是 DefaultCursor 的一个内部类,实现了 JDK 中的 Iterator 接口,源码如下。
private class CursorIterator implements Iterator<T> {
    T object;
    int iteratorIndex;

    private CursorIterator() {
        this.iteratorIndex = -1;
    }

    public boolean hasNext() {
        if (this.object == null) {
            this.object = DefaultCursor.this.fetchNextUsingRowBound();
        }

        return this.object != null;
    }

    public T next() {
        T next = this.object;
        if (next == null) {
            next = DefaultCursor.this.fetchNextUsingRowBound();
        }

        if (next != null) {
            this.object = null;
            ++this.iteratorIndex;
            return next;
        } else {
            throw new NoSuchElementException();
        }
    }

    public void remove() {
        throw new UnsupportedOperationException("Cannot remove element from Cursor");
    }
}

编程帮,一个分享编程知识的公众号。跟着站长一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

文章不深奥,不需要钻研,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

文章不涉及代码,不烧脑细胞,人人都可以学习。

当你决定关注「编程帮」,你已然超越了90%的程序员!

编程帮二维码
微信扫描二维码关注

所有教程

优秀文章