【问题标题】:IntelliJ IDEA can't recognize method recursion in a forEach callIntelliJ IDEA 无法识别 forEach 调用中的方法递归
【发布时间】:2016-08-12 14:27:59
【问题描述】:

考虑以下我作为图像附加的代码:

代码执行了一个无限循环,但这不是重点。关键是,如果我在 for 循环内进行递归,那么 IDEA 可以在左侧用符号显示。

如果我在 forEach lambda 表达式中进行递归,则没有符号。

如果能在这两种情况下都显示就舒服多了。 这是一个错误,还是有什么原因?

【问题讨论】:

  • 第二种情况没有直接递归。 IntelliJ 不知道 IntStream.range(0, 10) 返回的对象上的 forEach 方法与 lambda 有什么关系。

标签: java recursion intellij-idea java-8


【解决方案1】:

正如@Jesper 在他的评论中正确指出的那样,并不是每个 lambda 都会从它作为参数传递到的函数中同步调用。假设示例中使用的函数是invokeLater 而不是forEach

由于 IntelliJ 不了解将 lambda 作为参数的特定库函数的语义,因此它不会突出显示任何 lambda 中的递归调用。

【讨论】:

    猜你喜欢
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多