來自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/
Java lambda和函數接口
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.