λ希腊字母表中排序第十一位的字母,英语名称为Lambda
避免匿名内部类定义过多
其实质属于函数式编程的概念
(params) -> expression[表达式]
(params) -> statement[语句]
? (params) -> {statements}
a -> System.out.println(“i like lambda——>”+a);
new Thread(()->System.out.println("多线程学习")).start();
为什么要使用lambda表达式
也许你会说,我看了Lambda表达式,不但不觉得简洁,反而觉得更乱,看不懂了。那是因为我们还没有习惯,用的多了,看习惯了,就好了。
理解Functional Interface(函数式接口) 是学习Java8 lambda表达式的关键所在。
函数式接口的定义:
任何借口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。
public interface Runnable{
public abstract void run();
}
对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。
实例:
public class TextLambda {
// 3.静态内部类
static class lamtext1 implements lam{
@Override
public void lamtext1() {
System.out.println("lamdba----------2");
}
}
public static void main(String[] args) {
// 普通调用
lamtext l = new lamtext();
l.lamtext1();
// 调用静态内部类
lamtext1 l2 = new lamtext1();
l2.lamtext1();
// 4.局部内部类
class lamtext2 implements lam{
@Override
public void lamtext1() {
System.out.println("lamdba----------3");
}
}
lamtext2 l1 =new lamtext2();
l1.lamtext1();
// 5.匿名内部类,没有类名,必须借助接口或父类
lam ll =new lam() {
@Override
public void lamtext1() {
System.out.println("lamdba----------4");
}
};
ll.lamtext1();
// lambda表达式简化
ll = ()->{
System.out.println("lamdba----------5");
};
ll.lamtext1();
}
}
// 1.定义一个函数式接口
interface lam{
void lamtext1();
}
// 2.实现类
class lamtext implements lam{
@Override
public void lamtext1() {
System.out.println("lamdba----------1");
}
}
实例2:
public class TextLambda_yc {
static class text1 implements lam1{
@Override
public void textlam(int a, String b) {
System.out.println(b+":"+a);
}
}
public static void main(String[] args) {
lam1 l = new text();
l.textlam(1,"静态内部类");
class text2 implements lam1{
@Override
public void textlam(int a, String b) {
System.out.println(b+":"+a);
}
}
l = new text2();
l.textlam(2,"局部内部类");
l = new lam1() {
@Override
public void textlam(int a, String b) {
System.out.println(b+":"+a);
}
};
l.textlam(3,"匿名内部类");
l=(a,b)->{
System.out.println(b+":"+a);
};
l.textlam(4,"lambda表达式");
}
}
interface lam1{
void textlam(int a,String b);
}
class text implements lam1{
@Override
public void textlam(int a, String b) {
System.out.println(b+":"+a);
}
}
/*
* 总结:
* lambda表达式只能有一行代码的情况下才能简化成为一行,如果有多行,那么就用代码块包裹
* 前提是接口为函数式接口
* 多个参数也可以去掉参数类型,要去掉都去掉,必须加括号
* */
1. 始终在 `v-for` 中使用 `:key` 在需要操纵数据时,将key属性与v-for指令一起...
1.小程序端代码示例 my.getPhoneNumber({ success: (res) = { let encryptedData...
步骤: 1、新建一个空文件,文件名为hhhh 2、初始化 git init 3、自己要与origin...
有许多命令行选手在linux下开发的时候会经常遇到一个问题,无论是svn还是git,提...
PHP+Mysql简单实现了图书购物车 本文主要讲述如何通过PHP+HTML简单实现图书购物...
图片来自 Pexels 突然电话响了起来,一看是我们的一个开发同学,顿时紧张了起来...
vscode怎么浏览器打开html预览?这里大家可以通过安装open in browser插件解决。...
Java HashMap removeNode 方法 分析 源码分析仓库 https://github.com/HANXU2018...
官网连接 https://docs.rt-thread.org/#/rt-thread-version/rt-thread-standard/...
mysql提供的模式匹配的其他类型是使用扩展正则表达式。 当你对这类模式进行匹配...