我正在做一些Java测试模拟。我不明白这个练习的答案:
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?你能解释一下这个练习吗?
非常感谢!
发布于 2018-04-29 11:25:54
下面是正在发生的事情:
(h,l) -> l是一个lambda,它接受h和l并返回l。根据interface Climb,作为参数的h和l是int,返回的l应该是bool;似乎存在隐式类型转换。
因此,行check((h,l) -> l, 5);很好,并接受正确类型的(Climb , int)参数。
(h,l) -> l只是在做:“让我们忘掉h和if l != 0, return true else if l == 0 return false”。
PS:如果是1的话,答案就是true。
修正版
interface Climb {
boolean isTooHigh(int height, int limit);
}
public class Main {
public static void main(String[] args) {
check((h,l) -> h>l, 5);
}
private static void check(Climb climb, int height) {
System.out.println(climb.isTooHigh(height, 10) ? "Too":"ok" );
}
}https://stackoverflow.com/questions/50085201
复制相似问题