You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java OCA模拟测试Lambda练习题疑问:参数l与1的区分及逻辑

关于Java Lambda练习题的疑惑解答

首先,帮你理清这两个核心问题:

1. 区分字母l和数字1

这里的l绝对是小写字母L,不可能是数字1,原因很直接:

  • Java里的变量名(包括Lambda的参数名)不能以数字开头,数字1根本没法作为合法的参数标识符;
  • 它对应接口Climb中isTooHigh方法的第二个参数limit,用l作为limit的缩写是编程里很常见的简写方式,完全符合命名习惯。

2. Lambda表达式的逻辑分析

先理清楚基础的对应关系:

  • 函数式接口Climb的方法签名是boolean isTooHigh(int height, int limit);,要求接收两个int参数,返回一个boolean值;
  • 你调用check方法时传入的Lambda是(h,l) -> l,其中h对应方法的height参数,l对应limit参数。

但这里有个关键问题:这段Lambda表达式是无法通过编译的!因为Lambda的返回值是int类型的l,而接口方法要求返回boolean类型,Java里int和boolean是完全不兼容的类型,没有自动转换规则,编译器会直接报错。

如果这是模拟题的内容,大概率是题目存在笔误,常见的正确写法可能是以下两种:

  • 若Lambda是(h,l) -> h > l:逻辑是判断传入的height(也就是调用check时的5)是否大于limit(check方法里固定传入的10),显然5>10为false,会输出ok;
  • 若Lambda是(h,l) -> l > h:逻辑是判断limit是否大于height,10>5为true,会输出Too。

如果题目确实就是(h,l) -> l,那这道题的考点就是Lambda返回类型必须与函数式接口方法的返回类型兼容,这段代码属于编译错误的典型案例。

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:28:19