java jdk 1.8 新增特性->( lambda特性)

来源:互联网 发布:淘宝考试以下不是催情 编辑:程序博客网 时间:2024/06/05 14:24

java ->

目的:

lambda表示数学符号“λ”,计算机领域中λ代表“λ演算”,表达了计算机中最基本的概念:“调用”和“置换”。在很多动态语言和C#中都有相应的lambda语法,这类语法都为了简化代码,提高运行效率。

lambda用法

    通过上文可以了解到,lambda语法是针对“回调接口”和“匿名内部类”作出的改进,所以lambda的语法目前仅对于部分接口,这些接口的特点是只含一个抽象方法,在lambda项目中,早期称为SAM类型(SAM = single abstract method 即单一抽象方法)。在最新的文档中(即这个版本),它们有了新名字,叫函数接口(functional interface),比如:


1 java.lang.Runnable
2 java.util.concurrent.Callable
3 java.security.PrivilegedAction
4 java.util.Comparator
5 java.io.FileFilter
6 java.nio.file.PathMatcher
7 java.lang.reflect.InvocationHandler
8 java.beans.PropertyChangeListener
9 java.awt.event.ActionListener
10 javax.swing.event.ChangeListener


lambda的语法包括三部分
1、参数列表
2、箭头符号"->"
3、代码块。

其中代码块很像一个方法体,return语句将控制权交还给匿名方法(anonymous method,即lambda表达式)的调用者;break和continue不能出现在函数体的顶部,不过可以出现在内部的循环里;如果代码块得出最终结果,那么每一个控制路径(control path) 必须都有返回或抛出异常。

如果代码块只有简单一行,可以省略return关键字和“{}”符号(以下所写的例子都是基于JDK 1.8 lambda预览版),比如:

  1. public class LambdaTest {  
  2.     interface lambdaInterface {  
  3.         public void me(String str);  
  4.     }  
  5.   
  6.     public static void main(String... args) {  
  7.         lambdaInterface li = (String s)->{System.out.println(s);};  
  8.         li.me("hello world!");  
  9.     }  

0 0