技术交流QQ群【JAVA,C++,Python,.NET,BigData,AI】:170933152

双冒号运算就是Java中的[方法引用],[方法引用]的格式是

类名::方法名

注意是方法名哦,后面没有括号“()”哒。为啥不要括号,因为这样的是式子并不代表一定会调用这个方法。这种式子一般是用作Lambda表达式,Lambda有所谓懒加载嘛,不要括号就是说,看情况调用方法。

例如

表达式:

person -> person.getAge();

可以替换成

Person::getAge

表达式

() -> new HashMap<>();

可以替换成

HashMap::new

这种[方法引用]或者说[双冒号运算]对应的参数类型是Function<T,R> T表示传入类型,R表示返回类型。比如表达式person -> person.getAge(); 传入参数是person,返回值是person.getAge(),那么方法引用Person::getAge就对应着Function<Person,Integer>类型。

下面这段代码,进行的操作是,把List<String>里面的String全部大写并返还新的ArrayList<String>,在前面的例子中我们是这么写的:

[java] view plain copy

  1. @Test
  2. public void convertTest() {
  3. List<String> collected = new ArrayList<>();
  4. collected.add(”alpha”);
  5. collected.add(”beta”);
  6. collected = collected.stream().map(string -> string.toUpperCase()).collect(Collectors.toList());
  7. System.out.println(collected);
  8. }
@Test
public void convertTest() {List<String> collected = new ArrayList<>();collected.add("alpha");collected.add("beta");collected = collected.stream().map(string -> string.toUpperCase()).collect(Collectors.toList());System.out.println(collected);
}

现在也可以被替换成下面的写法:

[java] view plain copy

  1. @Test
  2. public void convertTest() {
  3. List<String> collected = new ArrayList<>();
  4. collected.add(”alpha”);
  5. collected.add(”beta”);
  6. collected = collected.stream().map(String::toUpperCase).collect(Collectors.toCollection(ArrayList::new));//注意发生的变化
  7. System.out.println(collected);
  8. }
@Test
public void convertTest() {List<String> collected = new ArrayList<>();collected.add("alpha");collected.add("beta");collected = collected.stream().map(String::toUpperCase).collect(Collectors.toCollection(ArrayList::new));//注意发生的变化System.out.println(collected);
}

java零碎要点013---java lambda 表达式中的双冒号的用法 ::相关推荐

  1. java lambda 两个冒号_java lambda 表达式中的双冒号的用法说明 ::

    双冒号运算就是java中的[方法引用],[方法引用]的格式是 类名::方法名 注意是方法名哦,后面没有括号"()"哒.为啥不要括号,因为这样的是式子并不代表一定会调用这个方法.这种 ...

  2. java lambda 表达式中的双冒号和箭头的用法 ::

    先构造一些数据,创建一个User类 java lambda 表达式中的双冒号的用法 :: 双冒号运算就是Java中的[方法引用],[方法引用]的格式是 类名::方法名 如下图所示 User是一个类, ...

  3. java零碎要点---用java实现生成二维码,与解析代码实现

    创梦综合技术qq交流群:CreDream:251572072 二维码,是一种采用黑白相间的平面几何图形通过相应的编码算法来记录文字.图片.网址等信息的条码图片.如下图 二维码的特点: 1.  高密度编 ...

  4. java 8 lambda表达式中的异常处理

    文章目录 简介 处理Unchecked Exception 处理checked Exception 总结 java 8 lambda表达式中的异常处理 简介 java 8中引入了lambda表达式,l ...

  5. java supplier t_在Java中如何使用lambda表达式中的Supplier T接口?

    Supplier接口是一个预定义的接口,表示结果的提供者.它是使用lambda表达式.方法引用或默认构造函数实例化的.Supplier接口的函数方法是get()方法.此接口属于java.util.fu ...

  6. Java 8th 函数式编程:lambda 表达式

    Lambda 表达式是 java 8th 给我们带来的几个重量级新特性之一,借用 lambda 表达式可以让我们的程序设计更加简洁.最近新的项目摒弃了 6th 版本,全面基于 8th 进行开发,本文将 ...

  7. java thread lambda_Java8新特性--Lambda表达式

    从java8出现以来lambda是最重要的特性之一,它可以让我们用简洁流畅的代码完成一个功能. 很长一段时间java被吐槽是冗余和缺乏函数式编程能力的语言,随着函数式编程的流行java8种也引入了 这 ...

  8. java 复合方法_《Java 8 实战》Ch3: Lambda表达式(下):类型与限制、方法引用、复合...

    李文轩 2019-04-23 3.5 类型的检查和判断:变量捕获限制 类型检查 Lambda的类型是从使用Lambda的上下文推断出来的. Lambda表达式需要的类型称为目标类型 . Lambda表 ...

  9. lambda 表达式中的 this 与普通情况下的 this 指向

    lambda 表达式中的 this 与普通情况下的 this 指向 Java JavaScript this 绑定 总结与提醒   很多编程语言都支持 lambda 表达式,不过对于不同编程语言,其 ...

最新文章

  1. 【Qt】通过QtCreator源码学习Qt(四):插件管理PluginManager
  2. 免费正则表达式辅助工具(转)
  3. Windows IIS
  4. 系统架构_Linux内核系统架构介绍
  5. 【安全】从mimikatz学习Windows安全之访问控制模型
  6. 北京市计算机专修学院,北京计算机专修学院:三大热门专业
  7. 支付宝:“答答星球”小程序上线20天累计参与人数超2亿
  8. WSL1升级到WSL2
  9. spring-第十篇之XML Schema的简化配置,p、c、util命名空间
  10. 学生时代的经历,利用Python在机房杀红蜘蛛,脱离老师控制!
  11. android 支付接口
  12. ST集成传感器方案实现电子罗盘功能
  13. Go语言-测试与性能分析
  14. 如何利用魔棒工具抠图_ps魔棒工具怎么用?抠图常用工具(二)
  15. [精简]托福核心词汇32
  16. 服务器托管的费用介绍
  17. 集合论的创始人康托尔(G.Cantor)的故事
  18. 顺丰,四通一达,京东,百世,天天,德邦快递接口java-demo【快递100API】
  19. python切片练习(League of Legends)
  20. 动态表格的实现(layui动态表格实现)

热门文章

  1. C语言学习笔记---指向函数的指针
  2. keras笔记(4)-使用Keras训练大规模数据集
  3. 跟我学Spring Cloud(Finchley版)-04-服务注册与服务发现-原理剖析
  4. LAMP下http跳转到 https
  5. javascript-DOM-节点
  6. KETTLE6.0版本体验小结
  7. 「SF图片上传不清晰」解决方案
  8. 拖动布局之保存布局页面
  9. 有关Silverlight TreeView组件的研究[3]——Silverlight学习笔记(8)
  10. httpd glibc free() 报错解决一例