引用相同的Java方法但返回了不同的地址
作者:互联网
我引用相同的方法两次,但参考不同.看这个例子:
import java.util.function.Consumer;
public class MethodRefTest {
public static void main(String[] args) {
new MethodRefTest();
}
public MethodRefTest() {
Consumer<Integer> a = this::method;
System.out.println(a);
Consumer<Integer> b = this::method;
System.out.println(b);
}
public void method(Integer value) {
}
}
输出是:
MethodRefTest$$Lambda$1/250421012@4c873330
MethodRefTest$$Lambda$2/295530567@776ec8df
方法引用只不过是匿名类的语法糖吗?如果没有,我必须做什么才能始终获得相同的方法参考? (除了在字段中存储一次引用以便使用.)
(应用程序:我认为方法引用是观察者实现的一种更漂亮的方式.但是每次使用不同的引用时,一旦添加了观察者就不可能从观察者中移除它.)
解决方法:
Are method references nothing more than syntactic sugar for anonymous classes?
正确.它们并不一定总是被实施为重量级,但从概念上讲它们就是全部.
If not, what do I have to do to always get the same method reference? (Aside from storing a reference once in a field to work with.)
将引用存储在字段中.这就是答案. (抱歉.)
标签:java,method-reference,functional-interface 来源: https://codeday.me/bug/20190622/1263987.html