Java lambda和函数接口

来自http://yanwushu.sinaapp.com/

SAM(singleabstract method),也称为函数接口,即只有一个方法的接口,比如EventListener就是一个SAM。最好的SAM只有一个参数,因为这将会进一步简化lambda表达式的编写。使用lambda表达式可以简化sam的调用。

比如用


listeners.add(c-> System.out.println(c.message()));
替代
listeners.add(newEventListener() {
 @Override
 publicvoid message(MessageContext c) {
   System.out.println(c.message()));
 }
});


以SAM的方式用jOOX处理XML:


$(document)
 //Find elements with an ID
 .find(c-> $(c).id() != null)
 //Find their child elements
 .children(c-> $(c).tag().equals("order"))
 //Print all matches
 .each(c -> System.out.println($(c)))


 

在EF(.net平台的orm框架)中sam也有同样的用法:

context.MyUser.where(t->t.id= 1 && t.name.contains(‘yanwushu’));

备注:有许多关于Java8 lambda表达式和改善的Collections API的有趣的博客:

·        http://blog.informatech.cr/2013/04/10/java-optional-objects/

·        http://blog.informatech.cr/2013/03/25/java-streams-api-preview/

·        http://blog.informatech.cr/2013/03/24/java-streams-preview-vs-net-linq/

·        http://blog.informatech.cr/2013/03/11/java-infinite-streams/

 

发布了87 篇原创文章 · 获赞 19 · 访问量 63万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章