有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Why Intellij的调试器为这个Scala代码两次命中断点

当我在if语句中设置调试点并启用“Log:Breakpoint hit message”时,下面是scala代码

object App1 {
  def main(args: Array[String]): Unit = {
    iftest()
  }
  def iftest(): Unit = {
    val setA: Set[String] = Set("a", "b", "c");
    var setB: Set[String] = Set("d", "e", "f")
    if(setA.size > setB.size){ //here break point at line 8
      println("bigger")
    }
  }
}

我在控制台中得到了以下输出。问题是为什么这个断点会被击中两次

Breakpoint reached at com.eguller.App1$.iftest(App1.scala:8)
Breakpoint reached at com.eguller.App1$.iftest(App1.scala:8)

但是,对于遵循类似的Java代码,断点只命中一次

        Set<String> set1 = new HashSet<>();
        set1.add("1");
        set1.add("2");

        Set<String> set2 = new HashSet<>();
        set2.add("a");
        set2.add("b");

        if(set1.size() > set2.size()){ //here break point at line 8
            System.out.println("size different");
        }

我得到了以下输出

Breakpoint reached at com.eguller.JApp.main(JApp.java:8)

这是Intellij调试器中的一个bug,还是Scala编程语言的一个功能

IntelliJ IDEA 2021.3 Java-11 Scala-2.12.15


共 (0) 个答案