JDK 8 新特性 之 Lambda表达式
时间:2022-07-22
本文章向大家介绍JDK 8 新特性 之 Lambda表达式,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言
- Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。
- Lambda 允许把函数作为参数传递进方法中。
- 使用 Lambda 表达式可以使代码变的更加简洁紧凑。
- lambda表达式的重要特征:
- 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
- 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
- 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
- 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。
JDK8 之前调用接口的方式是通过匿名内部类,调用接口中的方法。
@FunctionalInterface
public interface FunctionInterface {
void get();
}
public class FunctionTest {
public static void main(String[] args) {
FunctionInterface functionInterface = new FunctionInterface() {
@Override
public void get() {
System.out.println("get方法");
}
};
functionInterface.get();
}
}
使用Lambda表达式调用接口中的方法
@FunctionalInterface
public interface FunctionInterface {
void get();
}
public class FunctionTest {
public static void main(String[] args) {
FunctionInterface ft = () -> {
System.out.println("JDK8 Lambda表达式调用:get方法");
};
ft.get();
}
}
() : 表示抽象方法所需的参数列表,(参数1,参数2) -> : 固定格式 {} :表示抽象方法的方法体
有返回值的Lambda表达式调用方法
@FunctionalInterface
public interface FunctionInterface2 {
String get();
}
public class FunctionTest {
public static void main(String[] args) {
FunctionInterface2 functionInterface2 = () -> {
return "有返回值的Lambda表达式调用方法";
};
System.out.println(functionInterface2.get());
/**
* 优化:有返回值的Lambda表达式调用方法
*/
FunctionInterface2 functionInterface3 = () -> "优化:有返回值的Lambda表达式调用方法";
System.out.println(functionInterface3.get());
}
}
有参数,有返回值的Lambda表达式调用方法
@FunctionalInterface
public interface FunctionInterface3 {
String get(String s);
}
public class FunctionTest {
public static void main(String[] args) {
FunctionInterface3 ft3 = (String s)-> s;
System.out.println(ft3.get("有参数,有返回值的Lambda表达式调用方法"));
}
}
- AngularJS in Action读书笔记1——扫平一揽子专业术语
- MS Enterprise Library 5.0发布!!
- WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇]
- 《Enterprise Library深入解析与灵活应用》博文系列汇总
- 使命必达: 深入剖析WCF的可靠会话[概念篇]
- AngularJS in Action读书笔记2——view和controller的那些事儿
- WCF技术剖析之二十一:WCF基本异常处理模式[中篇]
- 小程序上线“小游戏”,正式引爆3.0社交红利
- 漫谈人工智能机器翻译的前世今生
- 并发与实例上下文模式: WCF服务在不同实例上下文模式下具有怎样的并发表现
- 区块链将变革的五个行业
- WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[上篇]
- AngularJS in Action读书笔记3——走近Services
- 有了这些无人驾驶的汽车,未来还需要考驾照吗?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python SQLite常见异常及解决办法
- IPC—进程间通信的基础概念
- Python Django开发 经验技巧总结(一)
- Python SQLite 基本操作和经验技巧(二)
- AkShare-股票数据-主要股东
- 进程间通信的方式(1)
- Python Django开发 经验技巧总结(二)
- 进程间通信的方式(2)
- AkShare-股票数据-机构持股
- View的滑动方式 详细介绍
- AkShare-期货数据-分时数据
- Python 爬取留言板留言(三):多进程版+selenium模拟
- View事件分发、滑动冲突 详解
- Python Django开发 异常及其解决办法(一)
- 带你彻底搞懂-View的工作原理!