小编Ces*_*sar的帖子

方法链如何在Java 8 Comparator中工作?

我正在准备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).

当我输入中间变量而不是链接时,为什么它可以工作?是否有可能连锁?

java java-8 ocpjp

9
推荐指数
2
解决办法
544
查看次数

标签 统计

java ×1

java-8 ×1

ocpjp ×1