Lambda运动

时间:2018-04-29 09:35:30

标签: lambda predicate

我正在做一些Java OCA测试模拟。我不明白这个练习的答案:

interface Climb {
   boolean isTooHigh(int height, int limit);
}

public class Lambdas {
    public static void main(String[] args) {
        check((h,l) -> l, 5);
    }

    private static void check(Climb climb, int height) {
        if (climb.isTooHigh(height, 10))
            System.out.println("Too");
        else
            System.out.println("ok");
    }
}

我不明白l是否是" l"或" 1"因为拼写有点难以理解。我也不明白这个练习的逻辑。

你能告诉我纠正形式的必要性:l还是1? 你能解释一下这个练习吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

以下是发生的事情:

(h,l) -> l是一个lambda,它会hl并返回l。根据{{​​1}},interface Climbh作为参数为l,返回的int应为l;似乎存在隐式类型转换。

因此,行bool很好,并采用正确类型check((h,l) -> l, 5);的参数。

(Climb , int)正在做:“让我们忘记h,(h,l) -> l”。

PS:如果是if l != 0, return true else if l == 0 return false,答案将是1

更正版本

true