我正在为 Java 8 证书做准备,以下让我有点困惑,也许有人可以帮我解决这个问题?在示例中,对 Squirrel 类进行了建模。它有名字和重量。现在您可以创建一个 Comparator 类来使用这两个字段对这个东西进行排序。所以首先按名称排序,然后按重量排序。像这样的东西:
public class ChainingComparator implements Comparator<Squirrel> {
public int compare(Squirrel s1, Squirrel s2) {
Comparator<Squirrel> c = Comparator.comparing(s -> s.getSpecies());
c = c.thenComparingInt(s -> s.getWeight());
return c.compare(s1, s2);
}
}
到目前为止一切顺利.. 但令人费解的部分。在代码示例下方,他们声明您可以使用方法链接将其编写在一行中。也许我误解了,但是当我链接比较和thenComparing部分时,我得到了一个编译错误。这与比较的对象类型有关(首先是 String,然后是 int)。
为什么当我放入中间变量而不是链接时它会起作用?是否有可能完全链接?