探索Java语言与JVM中的Lambda表达式(三)

2014-11-24 11:01:30 · 作者: · 浏览: 3
ectoryFilter = (File f) -> f.isDirectory();
仅一瞥之,它看起来与ActionListener的示例相似,但让我们看看FileFilter接口的定义(请见清单14)。accept()方法会返回一个布尔值,但并没有一个显式的返回语句。相反,该返回值的类型是从Lambda表达式中推导出来的
清单14
public interface FileFilter {
public boolean accept(File pathname);
}
这就能解释,当方法返回类型为void时,为什么要进行特别处理了。对于这种情形,Lambda表达式会使用一对额外的小括号去包住代码部分(表达式体/body)。若没有这种怪异的语法,类型推导将无法正常工作--但你要明白,这一语法可能会被改变。www.2cto.com
Lambda表达式的表达式体可以包含多条语句,对于这种情形,表达式体需要被小括号包围住,但"被推导出的返回类型"这种语法将不启作用,那么返回类型关键字就必不可少。
最后还需要提醒你的是:当前,IDE似乎还不支持Lambda语法,所以当你第一次尝试Lambda表达式时,必须要格外注意javac编译器抛出的任何警告。
结论
Lambda表达式是自Java SE 5引入泛型以来最重大的Java语言新特性。应用得当,Lambda表达式可使你写出简洁的代码,为已有方法增加额外的功能,并能更好地适应多核处理器。到目前为止,我们能肯定的是,你正急切地想去尝试Lambda表达式,所以咱也别 嗦了...
你可以从Lambda项目的主页中获得包含有Lambda表达式的Java SE 8快照版。同样地,在试用二进制包时,你也应该先阅读一下"Lambda项目状态"的相关文章,可以在此处找到它们。