PDF 课件和源代码下载地址:
https://github.com/geektime-geekbang/LetsJava
作者回复:
Lambda的思维模式确实是有点不一样的。它是以数据的转换为基础的。之前的模式下,参数是数据,也就是“操作(数据)”。Lambda的情况下,参数是操作,也就是“数据(操作)”。正好相反。
比如说,之前是System.out.println(strData)。Lambda的情况下就是dataList.foreach(System.out :: println),括号里是操作。(而实际上在Java里,这个foreach也是变成了一个循环的)。
对于你的困惑。首先,“为什么forEach那里会是System.out(OutputStream类型)呢?”foreach里并不是一个OutputStream类型,而是System.out这个兑现的println方法。也就是说,System.out这个对象的println方法就是操作, 是想对list里每个元素执行的操作。
祝你速速顿悟Lambda大法的奥义。
作者回复:
if (nextChar >= nChars) { /* EOF */
if (s != null && s.length() > 0)
return s.toString();
else
return null; <---
}
作者回复:
无代码,不问题。