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的了解性知识,日常遇到的情况可以试着用一下,没有进行深入研究,仅供参考。

最新文章

  1. mysql的故事
  2. 火车采集器 帝国CMS7.2免登录发布模块
  3. (转)distcp从ftp到hdfs拷贝文件
  4. ajxa分页+多条件查询
  5. vector&lt;int&gt; v2 = 42; 为何非法
  6. android Button 切换背景,实现动态按钮和按钮颜色渐变
  7. NOIP2014 联合权值
  8. iOS开发笔记系列-基础2(类)
  9. listview加载性能优化
  10. VC-关于VC++ 6.0的那些事儿
  11. Linux下,Nginx的安装、升级及动态添加模块
  12. mssql server for docker on MacOs
  13. Windows 环境下进行的jenkins持续集成
  14. [Android] Android 注解绑定UI View组件库 ButterKnife 的使用
  15. Fibonacci快速实现(优化)
  16. [Algorithm] *String Matching and Hashing
  17. js 中面向对象的多态
  18. C# 能否获取一个对象所占内存的大小?
  19. jenkins连接提示错误urllib.error.HTTPError: HTTP Error 403
  20. 404 Note Found 现场编程

热门文章

  1. [数据结构]C语言二叉树的实现
  2. JavaWeb之数据源连接池(4)---自定义数据源连接池
  3. bzoj 3620: 似乎在梦中见过的样子
  4. js变量提升与函数提升
  5. weex Mac开发环境
  6. NodeJS之微信开发
  7. 正则表达过滤表单隐藏元素,组装post数据
  8. Centos7上安装使用locate
  9. Augustus安装小记
  10. jQuery 实现无限任意添加下拉菜单