Java-当在断言中调用函数时,不能介入函数



所以我注意到,在调试Netbeans Java应用程序时,当在断言函数中使用函数调用时,您无法在该函数中找到断点或进入该函数。

起初,我认为这与使用重写函数和不调用我的重写函数有关,但我确认这不是事实。它仍然被调用,但无法介入。

以下是我尝试过的片段:

public class Example
{
    public static boolean blah()
    {
        System.out.println("Executing");    //**Breakpoint here
        return true;
    }
    public static void main(String[] args)
    {
        assert(blah());    //Cannot step into or hit breakpoint on this line.
        blah();            //Can here.
    }
}

有人知道为什么这不起作用吗?

默认情况下,断言在运行时被禁用。

也许您的调试JVM没有启用断言。

要启用断言,请为NetBeans调试JVM参数指定-enableassertions(或-ea)开关。即使断言被编译到字节码中,如果没有这个开关,它们也不会执行。

请参阅此链接了解更多

也许,只是也许,每个assert语句都在这个构建中得到了优化?你确定你的打印对账单执行了两次吗?

assert的全部意义在于,当您想要优化代码时,您可以告诉编译器忽略里面的内容。

最新更新