Lambda 表达式

Lambda 表达式(本质上,就是简化语句书写)

Lambda 表达式,是 JDK 8 引入的新特性,使用更加简洁的代码可以且只可以创建函数式接口实例。

目录

正文

1. 语法规则

1.1 使用对象

Lambda 表达式只能用于只有一个抽象方法的接口(函数式接口)。

1.2 使用规则

> Lambda 表达式由 **形参列表、箭头、代码块** 组成。 * 形参列表:允许省略形参类型;若是只有一个形参,则可以省略 (); * 箭头:必须写成 -> * 代码块:若是只有一条语句,则可以省略花括号;若是,只有一条 return 语句,则可以省略 return;

2. 方法引用与构造器引用

![](http://images2015.cnblogs.com/blog/1200266/201707/1200266-20170717101640128-968205178.png)

2.1 引用类方法

```java //1. 定义函数式接口 @FunctionalInterface interface Converter { int convert(String from); }

//1.1 使用常规 Lambda 表达式实现
Converter converter = from -> Integer.valueOf(from);

//1.2 引用类方法
Converter converter = Integer::valueOf;


<h3 id="2.2"> 2.2 引用特定对象的实例方法</h3>
```java
//1. 定义函数式接口
@FunctionalInterface
interface Converter {
    int indexOf(String from);
}

//1.1 使用常规 Lambda 表达式实现
Converter converter = from -> "HelloWorld".indexOf(from);

//1.2 引用特定对象的方法,如 String:"HelloWorld"
Converter converter = "HelloWorld"::indexOf;

2.3 引用某类对象的实例方法

```java //1. 定义函数式接口 @FunctionalInterface interface Converter { String substring(String a, int b, int c); }

//1.1 使用常规 Lambda 表达式实现
Converter converter = (a, b, c) -> a.substring(b, c);

//1.2 引用某类对象的实例方法
Converter converter = String::substring;



<h3 id="2.4"> 2.4 引用构造器</h3>
```java
//1. 定义函数式接口
@FunctionalInterface
interface JFrameFactory {
    JFrame getJFrame(String title);
}

//1.1 使用常规 Lambda 表达式实现
Converter converter = (title) -> new JFrame(title);

//1.2 引用某类对象的实例方法
Converter converter = JFrame::new;
posted @ 2017-07-17 10:38  白清风  阅读(232)  评论(0)    收藏  举报