天天看点

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

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

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

目录

  • 1. 语法规则
    • 1.1 使用对象
    • 1.2 使用规则
  • 2. 方法引用与构造器引用
    • 2.1 引用类方法
    • 2.2 引用特定对象的实例方法
    • 2.3 引用某类对象的实例方法
    • 2.4 引用构造器

正文

1. 语法规则

1.1 使用对象

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

1.2 使用规则

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

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

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

2.1 引用类方法

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

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

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

2.2 引用特定对象的实例方法

//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 引用某类对象的实例方法

//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;                

2.4 引用构造器

//1. 定义函数式接口
@FunctionalInterface
interface JFrameFactory {
    JFrame getJFrame(String title);
}

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

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

转载于:https://www.cnblogs.com/mr-white/p/7192964.html