美文网首页
工作笔记(二)

工作笔记(二)

作者: overflow_e4e4 | 来源:发表于2019-07-24 18:33 被阅读0次

今日学习的时候看到这两段代码

  public Iterable<FileChannelRecordBatch> batchesFrom(final int start) {
        return () -> batchIterator(start);
    }

    @Override
    public AbstractIterator<FileChannelRecordBatch> batchIterator() {
        return batchIterator(start);
    }

另一段

 for (FileChannelRecordBatch batch : batchesFrom(startingPosition)) {
            long offset = batch.lastOffset();
            if (offset >= targetOffset)
                return new LogOffsetPosition(offset, batch.position(), batch.sizeInBytes());
        }

首先看到第二段的时候,本来我以为batchesFrom(startingPosition)得到的是一个数组或者一个list。但是其实得到的是一个Iterable<FileChannelRecordBatch>。其实List之所以可以用增强for循环的形式写主要也是因为实现了Iterable的接口,所以直接是Iterable的引用也是可以使用增强for循环的。
然后我认为一个精妙的地方是 () -> batchIterator(start)这是一种函数式的写法,其实可以认为和一个内部匿名类没有区别,但更简洁。

相关文章

网友评论

      本文标题:工作笔记(二)

      本文链接:https://www.haomeiwen.com/subject/proalctx.html