文章目录
学习目标
🔥 通过本篇文章的学习,要能够熟练的使用Lambda表达式实现对象的创建
🔥 通过本篇文章的学习,要能够熟练的使用Lambda表达式实现方法的引用
1.什么是Lambda
Lambda 表达式,也可称为闭包,是 Java SE 8 中一个重要的新特性,使用 Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。
基本语法:
(parameters) -> expression
(parameters) -> { statements }
以下是lambda表达式的重要特征:
- 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
- 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
- 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
- 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定表达式返回了一个数值。
Lambda 表达式的简单例子:
// 1. 不需要参数,返回值为 5
() -> 5
// 2. 接收一个参数(数字类型),返回其2倍的值
x -> 2 * x
// 3. 接受2个参数(数字),并返回他们的差值
(x, y) -> x – y
// 4. 接收2个int型整数,返回他们的和
(int x, int y) -> x + y
// 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void)
(String s) -> System.out.print(s)
2.Lambda的作用
创建对象
使用 Lambda 表达式可以简化使用内名内部类创建接口对象的过程,但是不是所有的接口都能使用 Lambda 表达式创建对象,使用 Lambda 表达式创建对象的接口需要满足函数式接口,也就是接口中只能有一个抽象方法,可以使用注解 @FunctionalInterface 进行约束
方法的引用
使用 :: 可以完成方法的应用
3.如何使用Lambda
1】使用Lambda创建对象
1.1 无返回值无参数
public interface LambdaInterFace{
void method();
}
LambdaInterFace lambdaInterFace = ()->{ System.out.println() }
1.2 无返回值有一个参数
public interface LambdaInterFace{
void method(int a);
}
LambdaInterFace lambdaInterFace = (int a)->{ System.out.println(a) }
LambdaInterFace lambdaInterFace = (a)->{ System.out.println(a) }
LambdaInterFace lambdaInterFace = a-> System.out.println(a)
1.3无返回值有多个参数
public interface LambdaInterFace{
void method(int a,int b);
}
LambdaInterFace lambdaInterFace = (int a,int b)->{ System.out.println(a) }
LambdaInterFace lambdaInterFace = (a,b)->{ System.out.println(a) }
LambdaInterFace lambdaInterFace = (a,b)-> System.out.println(a)
1.4 有返回值无参数
public interface LambdaInterFace{
int method();
}
LambdaInterFace lambdaInterFace = ()->{ return 20; }
LambdaInterFace lambdaInterFace = ()-> 20
1.5 有返回值有一个参数
public interface LambdaInterFace{
int method(int a);
}
LambdaInterFace lambdaInterFace = (a)->{ return a; }
LambdaInterFace lambdaInterFace = a-> a
1.6 有返回值有多个参数
public interface LambdaInterFace{
int method(int a,int b);
}
LambdaInterFace lambdaInterFace = (a,b)-> a+b
2】Lambda完成方法引用
在使用Lambda表达式时允许使用方法的引用,但引用的方法要和接口中方法的参数列表和返回值类型保持一致
2.1 普通方法的引用
public interface LambdaInterFace{
int method(int a,int b);
}
public class Aoo{
public int add(int a,int b){
return a+b;
}
public static int add2(int a,int b){
return a+b;
}
}
Aoo aoo = new Aoo()
// 普通方法的引用
LambdaInterFace lambdaInterFace = (a,b)-> aoo::add
// 静态方法的引用
LambdaInterFace lambdaInterFace = (a,b)-> Aoo::add2
2.2 构造方法的引用
public interface LambdaInterFace{
Aoo getAoo();
}
public class Aoo{
private int a;
private String b;
public Aoo(){
System.out.print("Aoo()")
}
public Aoo(int a,String b){
System.out.print("Aoo(int a,String b)")
}
}
LambdaInterFace lambdaInterFace = () -> Aoo::new
4.Lambda遍历集合
//给list集合添加数据的方法一:
ArrayList<String> list = new ArrayList();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
//给list集合添加数据的方法二:
//List<String> list = Arrays.asList("1", "2", "3", "4", "5", "6");
//forEach遍历方法一
list.forEach(number-> System.out.println("number = " + number));
//forEach遍历方法二
list.forEach(System.out::println)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/132207.html