双冒号运算就是Java中的[方法引用] Method references

[方法引用]的格式是 类名::方法名。

一般是用作Lambda表达式。

形如 ClassName::methodName 或者 objectName::methodName 的表达式,我们把它叫做方法引用(Method Reference)。可能你现在还理解不了,但是编译器足够聪明,或许你可以看看编译器是如何根据 “晦涩难懂” 的 Method Reference 来推断你的意图的。

例如

表达式:

person -> person.getName();

可以替换成

Person::getName

表达式

() -> new HashMap<>();

可以替换成

HashMap::new

方法引用的种类

方法引用有四种,分别是:

  • 指向静态方法的引用
  • 指向某个对象的实例方法的引用
  • 指向某个类型的实例方法的引用
  • 指向构造方法的引用

总结

其实,JVM 本身并不支持指向方法引用,过去不支持,现在也不支持。

Java 8 对方法引用的支持只是编译器层面的支持,虚拟机执行引擎并不了解方法引用。编译器遇到方法引用的时候,会像上面那样自动推断出程序员的意图,将方法引用还原成 接口实现对象,或者更形象地说,就是把方法引用设法包装成一个接口实现对象,这样虚拟机就可以无差别地执行字节码文件而不需要管什么是方法引用了。

需要注意的是,方法引用是用来简化接口实现代码的,并且凡是能够用方法引用来简化的接口,都有这样的特征:有且只有一个待实现的方法。这种接口在 Java 中有个专门的名称: 函数式接口。当你用试图用方法引用替代一个非函数式接口时,会有这样的错误提示: xxx is not a functional interface。

java 双冒号_Java 双冒号::是什么操作符?相关推荐

  1. java 双冒号_Java :: 双冒号使用

    英文:double colon,双冒号(::)运算符在Java 8中被用作方法引用(method reference),方法引用是与lambda表达式相关的一个重要特性.它提供了一种不执行方法的方法. ...

  2. java中的双与_java 双冒号是什么操作符?

    双冒号::在JDK8的Lambda表达式函数中开始使用,用作方法引用. 具体用法,咱们来举个例子: 假设有个Person类: public class Person { public enum Sex ...

  3. java 正则表达式匹配冒号_java 获取冒号后面的参数(正则)实现代码

    我就废话不多说了,大家还是直接看代码吧~ String regEx=":[\S]+"; String sql=" select * from a where id=:id ...

  4. java括号用法_Java双括弧使用技巧

    Java双括弧技巧回顾 初看cgaolei翻译的Java技巧之双括弧初始化一文,走马观花,只知用法,未细看后面的解释.蔚为惊艳,心里想Java竟然有这么神奇的语法而一直未得知.因为在初始化集合时确实方 ...

  5. java图片双缓存_Java 双缓冲技术消除图片闪动

    一般在使用Canvas组件刷新显示图片或者绘图的时候,会产生闪烁.这是由于机制是先使用背景色对原有内容进行覆盖,再往上面绘制新内容所引起的.我们看到的闪烁就是背景色和新内容之间的交替显示. 下面为Ca ...

  6. html中两个冒号,css中双冒号和单冒号区别

    :--是指的伪类 ::--是指的伪元素 1.字面意思: 伪类,1.css中有类选择器,某些元素并未定义类名,就可以通过伪类赋予样式,如:[:nth-child(n)]:2.伪类可以应用于元素执行某种状 ...

  7. [css] ::before和:after中单冒号和双冒号的区别是什么,这两个伪元素有什么作用?

    [css] ::before和:after中单冒号和双冒号的区别是什么,这两个伪元素有什么作用? 区别:伪元素在css1中已经存在当时用单冒号,css3时做了修订用双冒号 ::before ::aft ...

  8. html语言中的双冒号,css单冒号和双冒号用法和区别

    最近突然被别人问起css单冒号和双冒号有什么区别,答曰:"不知道". 虽然还在填坑中,但作为一个跨过了初级的FEer,感觉着实汗颜,刚好今天下午在搜别的问题的时候,突然看到一个对比 ...

  9. C++ 单冒号: 和双冒号:: 的作用

    刚开始看C++入门经典这本书,可能是C语言不过关吧,很多运算符跟关键字都理解不了,鄙人百度了好多文章,觉得以下是总结的比较好的 原文地址:http://www.360doc.com/content/1 ...

  10. html语言中的双冒号,::before 和:after 中双冒号和单冒号有什么区别?解释一下这 2 个伪元素的作用...

    标题:::before 和:after 中双冒号和单冒号有什么区别?解释一下这 2 个伪元素的作用? 相关知识点: 单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素.(伪元素由双冒号和伪 ...

最新文章

  1. Citrix XenApp 下载及一年 developer license 获取
  2. 【Win32汇编】__declspec(naked)裸函数
  3. poj 2078(搜索+剪枝)
  4. react native在static中使用this方法
  5. ASP.NET- 执行SQL超时的解决方案
  6. 安装WindowBuilder后,新建JFrame文件,不能查看Design
  7. python解题工程力学_工程力学学习与解题指导
  8. CPDA数据分析师证书含金量高吗?
  9. HTML_BOM-01
  10. Java日期时间格式转换
  11. 手机赚钱靠谱的方法,小编分享三个赚钱项目给你!
  12. JavaScript脚本语言基础(三)
  13. EDG 赢了,程序员们坐不住了.....
  14. 基于LabVIEW和USRP的文本传输
  15. Air Quality Index,简称AQI
  16. 等级保护、风险评估和安全测评分别是什么?
  17. 【01】计算机的发展
  18. idea 使用Maven 打包本地jar包及引用第三方jar包
  19. 足不出户怎么在家赚钱,暑假在家别闲着,给自己赚点生活费吧
  20. spad dtof lidar车载IMX459更新系列一特性和功能

热门文章

  1. 6D姿态估计算法汇总(上)
  2. 学习笔记 9.22 -9.29 补
  3. 第十章第二节 阿基米德原理
  4. vue v-if 和 v-show 的知识点
  5. 生产者与消费者 代码实现 java
  6. php使用memcached缓存总结
  7. Android之断点续传下载(转)
  8. 天书般的ICTCLAS分词系统代码(二)
  9. 【Tensorflow】基础概念epoch,batch_size辨析
  10. do while新用法--方便数据验证时跳出