编程语言
首页 > 编程语言> > 引用相同的Java方法但返回了不同的地址

引用相同的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