lambdas了解
Lambdas了解
功能接口的一个极其宝贵的特性是可以使用lambdas实例化它们。以下是一些关于lambdas的例子:
以逗号分隔的输入列表,左边是指定类型的输入,右边是返回的块: (int x,int y)-> {return x + y;}
以逗号分隔的输入列表,左侧为推断类型,右侧为返回值: (x,y)- > x + y
左侧为推断类型的单参数,右侧为返回值: x -> x * x
左边没有输入(正式名称:“burger arrow”),右侧返回值: ()- > x
在左边有推断类型的单参数,在右边没有返回(空返回)的块: x - > { System.out.println(x);}
静态方法参考: String::valueOf
非静态方法参考: Object::toString
捕捉方法参考: x::toString
构造函数参考: ArrayList::new
你可以把方法参考表格看作是其他形式的缩写。
方法参考等价的表达式
字符串:返回对象的值x - > String.valueOf(x)
对象::x - > x.toString tostring()
x:tostring()- > x.toString()
ArrayList::new()- > new ArrayList <>()
当然,Java中的方法可以重载。类可以有多个具有相同名称但不同参数的方法。它的构造函数也一样。ArrayList::new可以引用它的三个构造函数中的任何一个。它解决的方法取决于它所使用的功能接口。
以下是两种不能使用错误的例子:
例1:
int count = 0;
List<String> strings = Arrays.asList("a", "b", "c");
strings.forEach(s -> {
count++; // 错误:不能修改count的值
});
例2:
void appendAll(Iterable<String> values, Appendable out)
throws IOException { // doesn't help with the error
values.forEach(s -> {
out.append(s); // 错误:不能在这里抛出IOException
// Consumer.accept(T) doesn't allow it
});
} 以上是本人对Lambdas的了解性知识,日常遇到的情况可以试着用一下,没有进行深入研究,仅供参考。
lambdas了解的更多相关文章
- Lambdas in Java 8--reference
Part 1 reference:http://jaxenter.com/lambdas-in-java-8-part-1-49700.html Get to know lambda expressi ...
- Java 8: Lambdas和新的集合Stream API
Lambda是Java8的主要特色,Java 8: Lambdas & Java Collections | zeroturnaround.com一文介绍了使用Lambda集合处理大量数据的方 ...
- 用 JMH 检测 Lambdas 序列化性能
本文将介绍如何进行 Java Lambdas 序列化性能检测.Lambdas 的重要性以及 Lambdas 在分布式系统中的应用. Lambdas 表达式是 Java 8 中万众期待的新特性,其若干用 ...
- From delegates to lambdas z
I thought of naming this post “Evolution of lambdas in C#”, then I decided that wouldn’t be closest ...
- C++11 带来的新特性 (4)—— 匿名函数(Lambdas)
1 语法 Lambdas并不是新概念,在其它语言中已经烂大街了.直接进入主题,先看语法: [ captures ] ( params ) specifiers exception attr -> ...
- Java 8 新特性——Lambdas 表达式
本文内容 引入 测试数据 collect(toList()) map filter flatMap max 和 min reduce 整合操作 参考资料 Java 8 对核心类库的改进主要包括集合类的 ...
- Swift 中的闭包与 C 和 Objective-C中的 blocks 以及其它一些编程语言中的 lambdas 比較类似。
闭包是功能性自包括模块,能够在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C中的 blocks 以及其它一些编程语言中的 lambdas 比較相似. 闭包能够 捕获 和 ...
- RxJava 设计理念 观察者模式 Observable lambdas MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- lambdas vs. method groups
Update: Due to a glitch in my code I miscalculated the difference. It has been updated. See full his ...
随机推荐
- 将php项目打包docker镜像
简介:有时候我们需要将php的项目打包成docker镜像,这里介绍下 思路:我们php和apache结合一个镜像实现php项目的访问,mysql是一个单独的镜像 步骤: 1.首先我们在本地测试好自己的 ...
- SQL 杂活
例子一:查询两个表数据并且分页展示 select * from ( select ROW_NUMBER() OVER(order by CreateTime desc) as rownum,* fro ...
- JMeter脚本java代码String数组要写成String[] args,不能写成String args[],否则报错。
JMeter脚本java代码String数组中括号要写在类型关键字后面,不能写在变量名后面.
- 【Uva623】500!(高精)
Description 求N! \(N \leq 1000\) Sample Input 10 30 50 100 Sample Output 10! 3628800 30! 265252859812 ...
- C#中MessageBox用法大全(转)
我们在程序中经常会用到MessageBox. MessageBox.Show()共有21中重载方法.现将其常见用法总结如下: 1.MessageBox.Show("Hello~~~~&quo ...
- ls /proc/$$,self/fd/3,255 引发的一些琐事
我在使用bash的时候通常会利用它的自动补全功能来看看文件夹下的内容(连按两下Tab键),例如: 说明Music文件夹下有这三个文件,我也就不需要提前用ls命令来确定了. 但是最近我在查看当前shel ...
- PE格式第三讲扩展,VA,RVA,FA(RAW),模块地址的概念
PE格式第三讲扩展,VA,RVA,FA的概念 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) 一丶VA概念 VA (vi ...
- 455. Assign Cookies.md
Assume you are an awesome parent and want to give your children some cookies. But, you should give e ...
- JS画几何图形之三【正弦曲线】
数学式:y=Asin(ωx+φ)+k 样例:http://www.zhaojz.com.cn/demo/draw7.html 依赖:[点].[直线] JS函数的声明: //画正弦曲线 //dot 原点 ...
- WPF后台写ControlTemplate总结
这段时间写ControlTemplate的时候发现绑定的时候有些问题需要总结: 实例ControlTemplate如下: <UserControl x:Class="ArcGISWpf ...