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

工作笔记(二)

作者: 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