java jdk 1.8 新增特性->( lambda特性)
2016-10-12 22:21
771 查看
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预览版),比如:
public class LambdaTest {
interface lambdaInterface {
public void me(String str);
}
public static void main(String... args) {
lambdaInterface li = (String s)->{System.out.println(s);};
li.me("hello world!");
}
目的:
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预览版),比如:
public class LambdaTest {
interface lambdaInterface {
public void me(String str);
}
public static void main(String... args) {
lambdaInterface li = (String s)->{System.out.println(s);};
li.me("hello world!");
}
相关文章推荐
- JAVA 8 新特性详解-------与------- JDK 1.8 预览版 Lambda语法分析
- Java JDK1.8新特性Lambda 表达式
- JAVA JDK1.5新特性<静态带入、可变参数、增强For循环、自动装箱及自动拆箱>
- Java JDK1.8新特性
- jdk1.8新特性之Lambda表达式及在Android Studio中的使用
- java8新增特性(一)---Lambda表达式
- java 基础 JDK各个版本的新特性1.5---1.8
- JDK 1.8新特性Lambda入门
- JAVA基础【1.5】《Java核心技术1》Java程序设计概述-Java JDK1.8新特性【收集】
- [Java]_[JDK1.8新特性]
- Java还要再学一遍基础(四)JDK1.8新特性default,static
- Java JDK1.8新特性
- java8新增特性(一)---Lambda表达式
- JDK1.8新特性(二)Lambda表达式入门
- java中的<?><T><E>详解Jdk5.0新特性Generic Types (泛型)
- Java JDK1.8新特性
- JAVA 1.8 新特性学习(2) lambda表达式
- JDK1.8新特性(java)
- W3Cschool Java 8新特性----> Lambda 表达式
- 启动64位IDEA2016版本需要Java JDK 1.8版本,开发环境JDK 1.7问题解决方案(新增linux下配置)