比较 Lambda 表达式
问:有没有办法比较 lambda 表达式?
答:Java 语言规范没有定义比较 lambda 表达式的方法,但它允许实现提供自己的比较方法。
实现注意事项
目前,有实现 lambda 的合成类与程序中的捕获站点之间是 1:1 的关系。因此,在同一捕获位点捕获同一变量的两个 lambda 表达式将由同一实例表示,并且可以使用引用相等进行比较。但是,如果两个 lambda 表达式在不同的捕获位点捕获相同的变量或者不捕获,则它们可能由不同的实例表示,并且无法使用引用相等进行比较。
替代方案
如果需要比较 lambda 表达式,一种替代方法是使用序列化。可序列化的 lambda 可以使用其序列化形式进行比较。另一种替代方法是使用方法引用而不是 lambda 表达式。如果方法引用引用相同的方法,则可以使用引用相等进行比较。
人类可读的输出
目前无法获取人类可读的字符串lambda 表达式的表示。但是,可以使用反射提取 lambda 表达式引用的方法的名称。
以上是Java 中的 Lambda 表达式可以比较吗?的详细内容。更多信息请关注PHP中文网其他相关文章!