当前位置: 首页 > 面试题库 >

Java 8:方法参考绑定接收器和非绑定接收器之间的区别

罗凯
2023-03-14
问题内容

我正在尝试在代码中使用Java 8方法引用。有四种类型的方法引用可用。

  1. 静态方法参考。
  2. 实例方法(绑定接收器)。
  3. 实例方法(UnBound接收器)。
  4. 构造函数参考。

随着Static method referenceConstructor reference我有没有问题,但Instance Method (Bound receiver)Instance Method (UnBound receiver)真搞糊涂了。在Bound接收器中,我们使用对象引用变量来调用如下方法:

objectRef::Instance Method

UnBound接收器中,我们使用类名来调用如下方法

ClassName::Instance Method.

我有以下问题:

  1. 实例方法对不同类型的方法引用有何需求?
  2. BoundUnbound接收方方法引用之间有什么区别?
  3. 在哪里使用Bound接收器,在哪里使用Unbound接收器?

我还从Java
8语言功能书籍中
找到了对它的解释BoundUnbound接受者,但是仍然与实际概念混淆。


问题答案:

诸如此类的unbound接收器的概念String::length是指对象的方法,该方法 将作为lambda的参数之一提供
。例如,lambda表达式(String s) -> s.toUpperCase()可以重写为String::toUpperCase

但是Bounded是指当您在lambda中调用 已存在外部对象 的方法时的情况。例如,lambda表达式() -> expensiveTransaction.getValue()可以重写为expensiveTransaction::getValue

三种不同方法引用方式的情况

(args) -> ClassName.staticMethod(args)ClassName::staticMethod

(arg0, rest) -> arg0.instanceMethod(rest)
可以ClassName::instanceMethodarg0是类型ClassName

(args) -> expr.instanceMethod(args)expr::instanceMethod

Java 8 Action Book中检索到的答案



 类似资料:
  • 本文向大家介绍静态绑定和动态绑定之间的区别,包括了静态绑定和动态绑定之间的区别的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将了解静态绑定和动态绑定之间的区别。 静态绑定 它在编译时解决。 它使用类和字段的类型。 它使用私有,最终和静态方法和变量。 示例:重载 动态绑定 在运行时解决。 虚方法使用此技术。 它使用对象来解决绑定。 示例:方法覆盖。

  • 问题内容: 查看下面显示的G​​o文档,我很难理解接收器和参数之间的区别: 该方法的签名如下:这是一个名为save的方法,该方法将指向Page的指针作为其接收者p。它不带任何参数,并返回错误类型的值。 问题答案: 该接收机是像在C#:在所述接收器和所述参数是,和。执行该函数时,参数引用参数的副本。接收方和参数之间的重要区别在于,当接收方是调用站点上的接口类型时,要调用的功能是动态而非静态确定的。

  • 本文向大家介绍详解python方法之绑定方法与非绑定方法,包括了详解python方法之绑定方法与非绑定方法的使用技巧和注意事项,需要的朋友参考一下 写在之前 在 Python 的类里面除了属性之外,还有方法,当然也有文档和注释这类东西,但是这个只是人来看,计算机则不关心。我们之前说过,我们一般用实例调用方法,既然我们说了是一般,那么就说明还有其他调用方法的方式,今天我们就来说一下「绑定方法和非绑定

  • 问题内容: 我正在关注Go教程,由于无法理解特定的方法签名而陷入困境: 该文档解释如下: 该方法的签名如下:“这是一个名为save的方法,它的接收方p是指向Page的指针。它不带参数,并且返回错误类型的值。” 我不明白接收器是什么。我将其作为参数读取,但随后我期望参数位于中。 问题答案: 接收者是声明方法的对象。 要向对象添加方法时,请使用此语法。 例如:http://play.golang.or

  • 问题内容: 我认为,一旦它被召唤出来,这将变得有点明显,但现在以下内容并未点击。 我有一个叫做Stack的类型,它是空接口的一部分。假定为空,则Push方法满足该接口。给定切片是引用类型,为什么不能仅按​​值传递“堆栈”接收器?此外,在上面的示例中,接收器作为指针传递,为什么附加的内置内置元素需要再次通过指针传递? IE,鉴于分片是指向基础数组的引用指针,为什么不起作用? 问题答案: 请参阅Go博

  • 问题内容: 我之所以问这个问题,是因为对该答案的评论主题进行了讨论。我有90%的方法可以解决问题。 存在三种不同形式: 绑定方法 , 未绑定方法 和 函数 对象之间的区别是什么,所有这些都由f1描述?一个人怎么称呼这三个物体?它们如何相互转化?关于这些东西的文档很难理解。 问题答案: 一个 功能 是创建由声明,或通过。在Python 2下,当函数出现在语句主体中(或传递给类构造调用)时,它将转换为