是
test::testMethod == test::testMethod
真的吗?我想知道它们是否会引用同一个对象。这段代码无法编译。但可能有几种情况需要澄清。
我怀疑这会扩展到
Runnable r = () -> test.testMethod()
Runnable r1 = () -> test.testMethod()
以及以下内容是否正确。
r == r1
最佳答案
即使您的代码可以编译并且 test::testMethod
声明为 Runnable
答案 test::testMethod == test::testMethod
总是返回 false,因为您与两个 diff 类实例进行比较。对于每个 lambda 表达式,编译器都会为其创建一个合成
匿名内部类。例如:
//a synthentic anonymous lambda class A implemented Runnable
Runnable r = () -> test.testMethod();
//a synthentic anonymous lambda class B implemented Runnable
Runnable r1 = () -> test.testMethod();
r.getClass().equals(r1.getClass());// always return false
关于Java 双冒号运算符引用 (::),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43114217/