java lambda表达式条件_java_Lambda表达式

Lambda表达式

当需要启动一个线程去完成任务时,通常会通过 java.lang.Runnable 接口来定义任务内容,并使用java.lang.Thread 类来启动该线程。代码如下:

public class Demo{

public static void main(String[] args) {

// 匿名内部类

Runnable task = new Runnable() {

@Override

public void run() { // 覆盖重写抽象方法

System.out.println("多线程任务执行中!");

}

};

new Thread(task).start(); // 启动线程

}

}

对于 Runnable 的匿名内部类用法,可以分析出几点内容:

Thread 类需要 Runnable 接口作为参数,其中的抽象 run 方法是用来指定线程任务内容的核心;

为了指定 run 的方法体,需要 Runnable 接口的实现类;

为了省去定义一个 RunnableImpl 实现类的麻烦,使用匿名内部类;

必须覆盖重写抽象 run 方法

借助Java 8的全新语法,上述 Runnable 接口的匿名内部类写法可以通过更简单的Lambda表达式达到等效:

public class Demo02{

public static void main(String[] args) {

new Thread(() -> System.out.println("多线程任务执行中!")).start(); // 启动线程

}

}

这段代码和刚才的执行效果是完全一样的,可以在jdk1.8或更高的编译级别下通过

4fcb36635683c7519104fea135fbfb83.png

Lambda表达式的标准格式为:

(参数类型 参数名称) -> { 代码语句 }

格式说明:

(1)当(形参列表)是空参(),那么括号不能省略

(2)当(形参列表)只有一个形参时,并且类型也可以确定或可以推断时,可以省略()和数据类型,要省略就一起省略.

(3)当(形参列表)有多个时,而且类型也可以确定或可以推断时,可以省略数据类型

(4)当{Lambda体}中不止语句时,不能省略},并且每一个语句还必须加;

(5)当{Lambda体}只有一个语句时,可以省略{}和该语句的:

(6)当{Lambda体}只有一个语句,并且是一个{return 返回值;}语句,那么可以一起省略return和}和这个;

(7)当{Lambda体}如果不止一个语句,那么如果函数式接口的抽象方法有返回值,那么必须有return

四个最基本的函数式接口:

消费型接口Consumer:void accept(T t)

特点是,它的抽象方法:有参无返回值

0a4d48d6c662793dfb31ae4e2fb56216.png

供给型接口 Supplier:T get()

特点是,它的抽象方法:无参有返回值

dbf43e94f9948d5fac2da895918c906d.png

判断型接口 Predicate:boolean test(T t)

特点是,它的抽象方法;boolean test(有参)无论你给我什么参数,都是用来判断条件,结果只有true,false

3e30f6443ee0812543de3f0f1374c1b4.png

功能型接口 Function:R apply(T t)

特点是,它的抽象方法:有参有返回值

方法引用和构造器引用

当{Lambda体}只有一句时,并且是通过调用一个类或一个对象的方法来完成的,并且函数式接口的抽象方法的形参列表和返回值类型与你调用的这个类或对象的方法的形参列表和返回值类型要对应。

当{Lambda体}只有一句时,并且是通过创建一个对象来完成的,并且函数式接口的抽象方法的形参列表和返回值类型与你构造器的形参列表与所创建的对象的类型要对应。

方法引用和构造器引用语法:

类名/对象名::方法名

类名/数组类型::new

28ce9c0791ab769837afe27f05628dde.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值