当前位置: 代码网 > it编程>编程语言>Java > Java方法引用是什么?双冒号::用法与四种方法引用详解

Java方法引用是什么?双冒号::用法与四种方法引用详解

2026年09月03日 Java 我要评论
一、双冒号“::”就是 java 中的方法引用(method references)方法引用的格式是类名::方法名。一般是用作 lambda表达式。形如 classname::

一、双冒号“::”就是 java 中的方法引用(method references)

方法引用的格式是类名::方法名

一般是用作 lambda表达式。

形如 classname::methodname 或者 objectname::methodname 的表达式,叫做方法引用(method reference)。

看看编译器是如何根据 “晦涩难懂” 的 method reference 来推断开发者的意图的。

例如:

1.表达式:
person -> person.getname();
可以替换成:
person::getname

2.表达式:
() -> new hashmap<>();
可以替换成:
hashmap::new

二、四种方法引用

1.指向静态方法的引用

2.指向某个对象的实例方法的引用

3.指向某个类型的实例方法的引用

4.指向构造方法的引用

三、总结

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

需要注意的是:

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com