其他分享
首页 > 其他分享> > lambda表达式

lambda表达式

作者:互联网

一.语法    1.1一般性语法           (Type1 param1, Type2 param2, ..., TypeN paramN) -> {         statment1;         statment2;         //.............         return statmentM; }     1.2单参数语法 Type param ->{         statement1;         statement2;         //..........         return statementM; }         1.3单语句写法   param1 -> statment        1.4方法引用写法 Class or instance :: method   例如:将列表中的字符串转换为全小写 List<String> proNames = Arrays.asList(new String[]{"Ni","Hao","Lambda"}); List<String> lowercaseNames3 = proNames.stream().map(String::toLowerCase).collect(Collectors.toList());   二、Lambda表达式可使用的变量       2.1内部自定义变量     2.2外部变量     2.3传递变量 不过lambda表达式访问外部变量有一个非常重要的限制:变量不可变(只是引用不可变,而不是真正的不可变)。 例如在lambda表达式内修改外部变量,编译器会提示外部变量为final。不可改变。在Jdk1.8之前匿名类内部想要引用外部变量,外部变量必须为final修饰。1.8之后改成隐式的final修饰。   三、lambda表达式中的this的概念       在lambda中,this不是指向lambda表达式产生的那个SAM对象,而是声明它的外部对象。   四、方法引用与构造器引用     4.1方法引用 objectName::instanceMethod ClassName::staticMethod ClassName::instanceMethod 前两种方式类似,等同于把lambda表达式的参数直接当成instanceMethod|staticMethod的参数来调用。比如System.out::println等同于x->System.out.println(x);Math::max等同于(x, y)->Math.max(x,y)。 最后一种方式,等同于把lambda表达式的第一个参数当成instanceMethod的目标对象,其他剩余参数当成该方法的参数。比如String::toLowerCase等同于x->x.toLowerCase()。 可以这么理解,前两种是将传入对象当参数执行方法,后一种是调用传入对象的方法。        4.2构造器引用 构造器引用语法如下:ClassName::new,把lambda表达式的参数当成ClassName构造器的参数 。例如BigDecimal::new等同于x->new BigDecimal(x)。     五、常用函数

 

 

                                                      橙子AQA 发布了91 篇原创文章 · 获赞 57 · 访问量 20万+ 私信 关注

标签:变量,等同于,参数,引用,表达式,lambda
来源: https://blog.csdn.net/qq_35211818/article/details/104184532