我正在做一些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? 你能解释一下这个练习吗?
非常感谢!
答案 0 :(得分:1)
以下是发生的事情:
(h,l) -> l
是一个lambda,它会h
和l
并返回l
。根据{{1}},interface Climb
和h
作为参数为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