【发布时间】:2015-02-05 04:41:16
【问题描述】:
我一直只使用 Java 6,现在正赶上学习 Java 8 的新功能。我在这里阅读了这篇文章: http://www.drdobbs.com/jvm/lambda-expressions-in-java-8/240166764?pgno=2
它说:
Java API 在 java.util.function 包。其中一个接口 BiFunction 描述了具有参数类型 T 和 U 以及返回类型的函数 R. 您可以将我们的字符串比较 lambda 保存在该变量中 类型:
BiFunction<String, String, Integer> comp
= (first, second) -> Integer.compare(first.length(), second.length());
但是,这对您进行排序没有帮助。那里 没有需要 BiFunction 的 Arrays.sort 方法。如果您使用过 在使用函数式编程语言之前,您可能会对此感到好奇。但 对于 Java 程序员来说,这很自然。一个接口如 比较器有一个特定的目的,而不仅仅是一个给定的方法 参数和返回类型。 Java 8 保留了这种风格。当你想要的时候 要使用 lambda 表达式做某事,您仍然希望保留 记着表达的目的,并具有特定的功能 接口。
但是,当我看到这个帖子时: How do you assign a lambda to a variable in Java 8?
那里的问题的答案建议完全按照引用的段落所说的去做。
那么,是文章中的信息不正确,还是我在这里看错了什么?
谢谢!
【问题讨论】:
-
您可以将相同的 lambda 分配给
Comparator并在排序调用中使用它...
标签: java java-8 lambda bifunctor