1
17
JLS makes no promises 关于从方法引用表达式中得到的内容的同一性或相等性。 您可以运行快速测试:
但这当然取决于实现。
你
能够
做你的羔羊
|
2
7
试试这个就知道答案:
答案是…不幸的是没有。
当然,如果您保持相同的引用(即,相同的对象),它将起作用;但是,如上例所示,如果您请求两个lambda,尽管它们看起来是相同的,但它们永远不会相等。
因此
对于构造函数(例如arraylist::new)和未绑定方法(例如object::tostring),答案也是否定的。似乎每次使用lambda表达式时都会构造一个新的lambda。
正如@hitobat所指出的那样,如果你想一想lambdas到底是什么以及它们是从哪里来的,那么这种不好的品质是有意义的。基本上,
|