我正在准备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);
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止一切都那么好..但后来令人费解的部分.在代码示例下面,他们声明您可以使用方法链接在一行中编写它.也许我误解了,但当我链接比较和thenComparing部分时,我得到一个编译错误.它与被比较的对象类型有关(首先是String,然后是int).
当我输入中间变量而不是链接时,为什么它可以工作?是否有可能连锁?