暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Java8新特性lambda表达式介绍及使用

IT那活儿 2021-01-09
1082
最好的总会在不经意间出现。

一、介绍

  

 java8中一个非常重要的特性就是lambda表达式,我们可以把它看成是一种闭包,它允许把函数当做参数来使用,是面向函数式编程的思想,一定程度上可以使代码看起来更加简洁。例如以前我们使用匿名内部类来实现代码:

使用lambda则更加简洁:

二、lambda表达式语法

(paramters)-> expression;

或者

(paramters)-> {statements;}

lambad表达式被 箭头操作符->分为两大部分;

左侧部分:给出lambda内容体需要用到的所有参数;

右侧部分:lambda内容体,即lambda表达式要执行的功能;

三、lambda表达式特征

可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。

可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。

可选的大括号:如果主体包含了一个语句,就不需要使用大括号。

可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。

示例:

四、使用及示例

方法引用实际上是Lambda表达式的一种语法糖。我可以将方法引用看作是一个函数指针。

方法引用有很多种,它们的语法如下:

静态方法引用:ClassName::methodName

实例上的实例方法引用:instanceReference::methodName

超类上的实例方法引用:super::methodName

类型上的实例方法引用:ClassName::methodName

构造方法引用:Class::new

数组构造方法引用:TypeName[]::new

示例:

lamdba写法:

@Test

voidtest1(){

Consumer<String>con = x -> System.out.println(x);

}

方法引用写法:

@Test

voidtest2(){

PrintStreamout = System.out;

Consumer<String>con = out::println;

}

五、注意事项

lambda表达式的局部变量可以不用声明为final,但是必须不可被后面的代码修改(即隐性的具有final的语义)

在Lambda表达式当中不允许声明一个与局部变量同名的参数或者局部变量。

六、总结

  Java允许我们使用Lambda表达式替代传统的匿名类创建使用方式,当该参数接口是含有单个函数的函数式接口,我们就可以使用Lambda表达式去替代匿名类的使用方式。这就是Lambda的强大之处。极大缩短代码行数,同时大大提高代码的易读性,以上是笔者对java8新特性-Lambda表达式个人理解,欢迎大家一起共同探讨。

END

努力做一个可爱的人

微信 | justdoit2019syy

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论