首页 生活指南 正文内容

什么是表达式?new一个函数主体函数式接口使用

阿立指南 生活指南 2022-09-15 13:09:25 468 0

什么是表达式?

表达式可以理解为表达可传递匿名函数的一种简洁方式:它没有名称,但它有一个参数列表、一个函数体、一个返回类型,可能还有一个可以抛出的异常列表。

例如传统的new写法如下

那么表达式的使用写为

->左边是参数列表,->右边是函数体

功能界面

为什么用@注解修饰的类只能有一个抽象函数

看Java8的源码,@修饰的函数称为函数式接口。例如,这些类往往只有一个抽象函数,那是因为“表达式被理解为简洁地表示可传递的匿名函数”,而直接使用的匿名函数在使用函数时并没有指定函数名。因此,如果有两个或多个抽象函数,虚拟机不知道要执行哪个方法。对于上例中的run()方法java lambda 方法引用,我们只使用了(),并没有声明要调用的函数名。

JDK自带的功能接口都在java.util中。路径,常用的有

函数式接口使用示例

其他功能接口使用示例

为什么使用局部变量的表达式必须是final的?

表达式体除了使用参数列表的数据外,还可以使用表达式外的局部变量,但是这些局部变量只能声明一次,否则会报错。

因为表达式体可以看作是一个匿名的内部类,所以对外部局部变量的访问需要是final的。从线程的角度来看,局部变量是一个线程(假设它被称为线程A),而表达式的主体是另一个线程(线程B)。当线程A结束时,线程B也需要访问线程A的数据。不,所以线程B中的变量实际上并不是指向线程A中的变量,而是一个副本,所以必须保证复制的数据不能改变。

方法参考

java lambda 方法引用_lambda 方法引用_lambda表达式方法引用

表达式还有一个很方便的地方,就是方法引用,可以直接以类名::方法名的形式使用。

例如

复合表达式的使用

表达式也可以被链接起来,并具有 AND 或 NOT (, and and or) 的逻辑判断

lambda 方法引用_lambda表达式方法引用_java lambda 方法引用

功能构成

函数接口提供了两种对数据进行连续操作的方法和方法。

方法相当于先执行f函数java lambda 方法引用,再执行g函数。

方法相当于先执行g函数,再执行f函数。

欢迎 发表评论:

文章目录
    搜索