Java - 在断言中调用函数时无法进入函数

ait*_*tee 1 java assert breakpoints skip step-into

因此,我在调试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.
    }
}
Run Code Online (Sandbox Code Playgroud)

任何人都有任何想法为什么这不起作用?

Boh*_*ian 5

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

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

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

请参阅此链接了解更多信息