gpt4 book ai didi

java - Java 方法引用稳定吗?

转载 作者:IT老高 更新时间:2023-10-28 20:34:58 28 4
gpt4 key购买 nike

如果我使用新语法获得方法引用:

anObject::aMethod

我总是得到同一个对象吗?也就是说,我可以相信对同一方法的两个引用是相等的吗?

很高兴知道,例如,我是否计划将它们用作我可以添加和删除的 Runnable 回调:

someLibrary.addCallback(anObject::aMethod)
// later
someLibrary.removeCallback(sameObject::sameMethod)

这是否需要将引用保存在 Runnable 变量中以保持稳定?

最佳答案

JLS makes no promises关于你从方法引用表达式中得到的东西的身份或平等。

您可以运行一个快速测试:

Object obj = new Object();

IntSupplier foo = obj::hashCode;
IntSupplier bar = obj::hashCode;

System.out.println(foo == bar); // false

System.out.println(foo.equals(bar)); // false

但这当然取决于实现。

可以使您的 lambda Serializable 并使用序列化表示来键入您的回调映射。见 How to serialize a lambda? .虽然这会起作用,但并不完全符合规范要求。

关于java - Java 方法引用稳定吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50748534/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com