三元运算符(Conditional operator)嵌套匿名函数报错原因咨询
问题描述
我希望在三元运算符嵌套的匿名函数内执行一些操作,代码如下:
import javakara.JavaKaraProgram; public class A4C extends JavaKaraProgram { public void myProgram() { while (!kara.onLeaf()) { boolean m = kara.treeFront() ? (()->{ //content of function }):false; } } }
其中kara.treeFront()返回boolean类型,我认为需要将三元运算符的结果赋值给变量,但当前出现如下错误信息:
path/a4c.java:6: error: incompatible types: bad type in conditional expression boolean m = kara.treeFront() ? (()->{ ^ boolean is not a functional interface
请问我哪里出错了?
错误原因与解决方法
- 类型不兼容:三元运算符要求两个分支的返回类型必须可兼容。你当前第一个分支是Lambda表达式(匿名函数),第二个分支是
boolean类型的false,这两种类型完全无法转换,导致编译器报错。 - 逻辑使用错误:三元运算符的核心作用是返回一个值,而非用于条件分支执行代码逻辑。如果要根据条件执行一段代码,
if-else才是Java中处理这类需求的正确方式。
修改后的代码示例:
import javakara.JavaKaraProgram; public class A4C extends JavaKaraProgram { public void myProgram() { while (!kara.onLeaf()) { if(kara.treeFront()){ // 这里编写你要执行的代码 } else { // 若需要else分支逻辑,在此补充 } } } }
内容的提问来源于stack exchange,提问作者Parcival
相关产品推荐
相关产品推荐

