工作笔记(二)

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

  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)这是一种函数式的写法,其实可以认为和一个内部匿名类没有区别,但更简洁。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一夜无话,第二天一大早我们就起床了。洗漱完毕,出门坐车。到达昨天面试的地方,这次和昨天到达的门不一样,转了好久才找...
    安七娘阅读 378评论 0 0
  • 第二个工作笔记,又攒了几周的笔记了,趁着节前总结一下。 1、Flex flex布局是个好东西,且目前所有浏览器都支...
    wuyadream阅读 328评论 0 1
  • 问题:mac下成功安装java后,右键前往文件夹,打开资源库时,找不到java文件 解决办法: 在finder目录...
    挪威森林_29e6阅读 135评论 0 0
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,668评论 1 118
  • 对象的创建与销毁 Item 1: 使用static工厂方法,而不是构造函数创建对象:仅仅是创建对象的方法,并非Fa...
    孙小磊阅读 2,082评论 0 3