当前位置: 首页 > 面试题库 >

如何以编程方式启用断言?

宋铭
2023-03-14
问题内容

如何以编程方式为特定类启用断言,而不是指定命令行参数“ -ea”?

public class TestAssert {

    private static final int foo[] = new int[]{4,5,67};


    public static void main(String []args) {
        assert foo.length == 10;
    }
}

问题答案:

这是对@bala好的答案的评论,但时间太长。

如果仅启用断言,则调用您的主类-您的主类将在启用断言之前加载,因此您可能需要一个不直接引用代码中其他内容的加载器。它可以设置断言,然后通过反射加载其余代码。

如果在加载类时未启用断言,则应立即将其“编译出”,这样您就无法打开和关闭它们。如果要切换它们,则根本不需要断言。

由于运行时编译,如下所示:

public myAssertNotNull(Object o) {
    if(checkArguments) 
        if(o == null)
            throw new IllegalArgumentException("Assertion Failed");
}

应该可以像断言一样快地工作,因为如果执行了很多代码并且checkArguments是false并且没有改变,那么整个方法调用可以在运行时被编译出来,其基本作用与断言相同(此性能取决于虚拟机)。



 类似资料:
  • 本文向大家介绍如何以编程方式“重启” iOS应用程序?,包括了如何以编程方式“重启” iOS应用程序?的使用技巧和注意事项,需要的朋友参考一下 无论如何,您都无法重启iOS应用程序,即使您能够使用某些私有api,您的应用程序也将被Apple拒绝,并且不会被视为App Store版本。

  • 当我从中删除一个项目时,我希望显示一个“swipe”动画,即该项目从屏幕上侧向移动。我相信使用支持“swipe to dissist”,但这是触摸启动的,而我希望能够以编程方式启动swipe。 我还尝试通过扩展来设置项动画器。使用这种方法,我可以让项目左右滑动,但不幸的是,列表中的间隙很快就会关闭,以至于在列表项间隙关闭之前,滑动不会完成。 有人知道怎么做吗?

  • 以同样的方式,我想为OTG做这件事。

  • 问题内容: 请看下面的代码 数据库连接器 数据库UI 在这种情况下,我需要通过右键单击 _数据库节点 启动服务器_来手动启动derby(我正在使用NetBeans)。这是一个嵌入式数据库,这意味着我要将其从一台计算机转移到另一台计算机,并愿意通过双击jar文件来开始,而不是在每台计算机上都配置数据库并手动启动它们。但是,如果我没有手动启动数据库,则会收到错误消息 java.sql.SQLNonTr

  • 请看一下下面的代码 数据库连接器。JAVA 用户界面 在这种情况下,我需要通过右键单击数据库节点手动启动derby(我使用的是NetBeans) JAVAsql。SQLNonTransientConnectionException:java。网ConnectException:连接到端口1527上的服务器本地主机时出错,消息“连接被拒绝:连接”。 无论是在NetBeans内部,如果我没有手动启动它