首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lambda运动

Lambda运动
EN

Stack Overflow用户
提问于 2018-04-29 09:35:30
回答 1查看 103关注 0票数 0

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

代码语言:javascript
复制
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?你能解释一下这个练习吗?

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-29 11:25:54

下面是正在发生的事情:

(h,l) -> l是一个lambda,它接受hl并返回l。根据interface Climb,作为参数的hlint,返回的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

修正版

代码语言:javascript
复制
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" );
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50085201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档