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

未充分使用Java断言

卫泉
2023-03-14
问题内容

我想知道为什么assert关键字在Java中使用不足?我几乎从未见过使用它们,但是我认为它们是个好主意。我当然更喜欢简洁:

assert param != null : "Param cannot be null";

冗长的

if (param == null) {
    throw new IllegalArgumentException("Param cannot be null");
}

我怀疑它们没有得到充分利用,因为

  • 他们来得相对较晚(Java 1.4),到那时,许多人已经建立了Java编程风格/习惯
  • 它们默认在运行时关闭

问题答案:

__理论上, 断言
是用于测试不变式的假设,这些假设
必须 正确才能使代码正确完成。

所示示例测试了有效输入,这不是断言的典型用法,因为通常是用户提供的。

断言通常不用于生产代码中,因为存在开销,并且假定在开发和测试期间将不变量失败的情况捕获为编码错误。

您关于它们“迟到”到Java的观点也是为什么它们没有被更广泛地看到的原因。

同样,单元测试框架允许对程序断言的某些需求在要测试的代码外部。



 类似资料:
  • 问题内容: 我的Android应用程序需要使用中填充ListView数据ArrayList。 我这样做很麻烦。有人可以帮我提供代码吗? 问题答案: 你需要通过进行操作,以使ArrayList(或任何其他集合)适应布局中的项目(ListView,Spinner等)。 这是Android开发人员指南所说的: 一个管理任意对象数组支持的。默认情况下,此类期望提供的资源ID引用单个。如果要使用更复杂的布局

  • 我正在运行大型模型(774M)的GPT-2代码。它用于通过交互式_条件_样本生成文本样本。林克:这里 因此,我给出了一个输入文件,其中包含自动选择生成输出的提示。此输出也会自动复制到文件中。简而言之,我不是在训练它,而是在使用模型生成文本。而且,我使用的是一个GPU。 我在这方面面临的问题是,代码没有充分利用GPU。 通过使用NVIDIASMI命令,我可以看到下图 https://imgur.co

  • 我以标准方式在Java中使用断言,在IDE中启用它们。因此,它们不是产品发布的一部分。最近,我看到了<code>抛出新的断言错误()的代码示例 我的猜测是,主要区别在于断言的可选性,因此它们不会减慢生产性能,因此它们可以在代码中经常发生,但修复用户报告的几乎无法重现的错误更难。 对于,正好相反。 我还发现在代码中不应该执行的地方更实用,而不是使用。特别是如果需要返回值。例如: 我的推理正确吗 两种

  • 我不明白为什么我的没有更新。 下面是我的代码: 这是调用这些方法的main类的代码: 在中,在循环之后,我尝试过: .invalidate()方法在GUI的每个组件上(即使不推荐) GUI每个组件的 方法 方法(即使不推荐) 从方法中的2中,我可以看到填充了的行,但未显示它们。

  • 我在测试中有一段代码,使用Hamcrest 2.2检查结果列表是否包含某些属性: 当是一个普通的类时,这个工作非常好。但是在我将它更改为之后,Hamcrest的抱怨没有名为的属性: 是否有其他匹配器可以用来实现与之前相同的匹配?或者其他解决方法可以用来让它与记录一起工作?

  • 我很难用ObservableList中获得的数据填充JavaFX中的表视图。 当在病人信息控制器中按下btn确认()时,它会使用病人信息控制器视图中的屏幕文本数据创建一个病人对象。 然后将该对象添加到队列类中的LinkedList队列中。然后返回队列并将其传递给QueueTabPageController方法displayQueue() 我知道,当我将增强的for循环打印到控制台时,患者对象获得了