为了账号安全,请及时绑定邮箱和手机立即绑定

为什么实例方法引用适用于不匹配的签名?

为什么实例方法引用适用于不匹配的签名?

精慕HU 2023-05-24 16:18:49
所以我早些时候做了一些编码,发现一个函数的签名只需要Function<FooClass, String>,我可以为 FooClass 的函数传递一个方法,它产生一个字符串(见下面的例子)。所以我发现 java 支持它,我的意思是..它可以编译,public static class Foo {    public String produceString() {        return "Hello world!";    }}public static String test(Function<Foo, String> produceString) {    return produceString.apply(new Foo());}public static void main(String[] args) {    // WEIRD CODE BELOW!! Here's the method reference:    String output = test(Foo::produceString);    System.out.println(output);    // Outputs "Hello world!"}我的问题是:java 到底是怎么做到的!?有没有人解释为什么这有效?
查看完整描述

1 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

您可以将方法引用视为创建相应 lambda 表达式的语法糖:

String output = test(Foo::produceString);

givenproduceString是一个实例方法,上面的表达式等价于

String output = test( (Foo foo) -> foo.produceString() );


查看完整回答
反对 回复 2023-05-24
  • 1 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号