首页 > 编程语言 > 详细

Java Lambda表达式

时间:2020-07-06 22:44:44      阅读:57      评论:0      收藏:0      [点我收藏+]

Java Lambda表达式

 

Lambda是什么

在JDK 1.8  版本中新增了Lambda表达式

作用:简化匿名内部类

使用前提:必须是函数式接口

函数式接口:只有一个必须被重写的抽象方法的接口

强制检测是否为函数式接口,注解@FunctionalInterface

 

语法

    ()->{}  
()  匹配要重写的抽象方法的参数列表
->  Lambda符号箭头具有上下文推导的作用
{}  匹配要重写的抽象方法的方法体

 

匿名内部类

在讲解Lambda表达式之前先写一个匿名内部类的,好在接下来对它进行改写

public class Demo01 {
public static void main(String[] args) {
?
new MyInterface() {
@Override
public void mehtod() {
System.out.println("我是匿名内部类");
}
}.mehtod();
}
}
?
interface MyInterface {
void mehtod();
}

 

Lambda表达式

用法1

首先对上面的匿名内部类使用Lambda表达式进行改写

public class Demo01 {
public static void main(String[] args) {

MyInterface m = () -> {
System.out.println("我是Lambda表达式");
};
m.mehtod();
}
}
?
@FunctionalInterface
interface MyInterface {
void mehtod();
}

用法2 

方法体中如果方法语句只有一句,方法体前后的 {} 可以省略

public class Demo01 {
public static void main(String[] args) {

MyInterface m = () -> System.out.println("我是Lambda表达式");
m.mehtod();
}
}
?
@FunctionalInterface
interface MyInterface {
void mehtod();
}

用法3

如果有参数,参数的数据类型可以省略

箭头有上下文推导的作用,可以根据上下文,寻找到所需要的参数类型

public class Demo01 {
public static void main(String[] args) {

MyInterface m = (a,b) -> System.out.println("我是Lambda表达式"+a+b);
m.mehtod();
}
}
?
@FunctionalInterface
interface MyInterface {
void mehtod(int a,int b);
}

用法4

如果有参数且只有一个,前后的()可以省略

public class Demo01 {
public static void main(String[] args) {

MyInterface m = a -> System.out.println("我是Lambda表达式"+a);
m.mehtod();
}
}
?
@FunctionalInterface
interface MyInterface {
void mehtod(int a);
}

用法5

如果语句体只有一句,并且还是return 语句, return关键字及前后的{}可以一起省略

public class Demo01 {
public static void main(String[] args) {
?
MyInterface m = () -> "我是Lambda表达式";
System.out.println(m.mehtod());
}
}
?
@FunctionalInterface
interface MyInterface {
String mehtod();
}

Java Lambda表达式

原文:https://www.cnblogs.com/CHOI-6/p/13257944.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!