我正在尝试翻译以下Java代码:
import java.util.Comparator;
public class ComparatorTestJava {
public static void test() {
Comparator<String> cmp = (s1, s2) -> 0;
cmp = cmp.thenComparing(s -> s);
}
}
Run Code Online (Sandbox Code Playgroud)
进入斯卡拉.我认为这应该有效:
import java.util.{Comparator, function}
object ComparatorTest {
var comparator: Comparator[String] = (t1, t2) ? 0
comparator = comparator.thenComparing(new function.Function[String, String] {
override def apply(t: String): String = t
})
}
Run Code Online (Sandbox Code Playgroud)
但它失败并出现以下错误:
Error:(7, 41) type mismatch;
found : java.util.function.Function[String,String]
required: java.util.Comparator[? >: String]
comparator = comparator.thenComparing(new function.Function[String, String] {
Run Code Online (Sandbox Code Playgroud)
看起来Scala编译器确信我正在尝试使用thenComparing(Comparator)而不是thenComparing(Function).有什么方法可以告诉它它是什么?或者这实际上不是问题?
(我意识到还有其他的,也许更惯用的方法在Scala中构建比较器,但我很想知道为什么会失败.)