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

Java assert关键字有什么作用,什么时候应使用?

公良高刚
2023-03-14
问题内容

有哪些现实的例子可以理解断言的关键作用?


问题答案:

断言(通过assert关键字)是在Java 1.4中添加的。它们用于验证代码中不变式的正确性。切勿在生产代码中触发它们,并表示存在错误或滥用代码路径。可以在运行时通过命令-ea上的选项将其激活java,但默认情况下未启用它们。

一个例子:

public Foo acquireFoo(int id) {
  Foo result = null;
  if (id > 50) {
    result = fooService.read(id);
  } else {
    result = new Foo(id);
  }
  assert result != null;

  return result;
}


 类似资料:
  • 问题内容: 什么时候应该使用Apache Commons的Validate.isTrue,什么时候应该只使用’assert’关键字? 问题答案: 可以断言(实际上通常是断言),因此,例如,它们对于验证用户输入没有用。

  • 问题内容: 我已经查看了它的功能,但是实际上没有人举一个例子说明何时在Java中使用关键字吗?有人真的为此找到了用处吗? 仅将其放在我所有的浮点运算上会有副作用吗? 问题答案: Strictfp确保你从每个平台上的浮点计算中获得完全相同的结果。如果你不使用strictfp,则JVM实现可以自由使用额外的精度(如果可用)。 从JLS: 在FP-strict表达式中,所有中间值都必须是浮点值集或dou

  • 问题内容: 我正在网上关注Java教程,尝试学习该语言,并且它在使用数组的两种语义之间反弹。 和: 该教程从未真正提到过为什么它会在两者之间来回切换,所以我对该主题进行了一些搜索。我目前的理解是,操作员正在创建“ longs数组”类型的对象。我 不 明白的是为什么我要那个,那有什么后果? 是否存在某些特定于“数组”的方法,除非它是“数组对象”,否则这些方法对数组不起作用? 有什么我 不能 用普通数

  • 问题内容: 怎么办?例如在函数中: 问题答案: 如果使用(或-ea简称)启动程序,则此语句 相当于 如果不使用此选项启动程序,则assert语句将无效。 例如,;在你的问题中发布的,等同于 (如果你启动的是。) Java语言规范assert正式为:14.10。该声明说: 14.10。的声明 的断言是一个含有一个布尔表达式语句。断言是启用还是禁用。如果启用了断言,则断言的执行将导致对布尔表达式进行求

  • 问题内容: 奇怪的是: 似乎或多或少被定义为。通过这种方式很容易产生错误: 一些fname意外地以else块结尾。修复很简单,我们应该改用它,但是从表面上看,这似乎是一种不错的pythonic方式,并且比“正确”的方式更具可读性。 由于字符串是不可变的,所以为什么字符串错误是什么技术细节?什么时候进行身份检查更好,什么时候进行平等检查更好? 问题答案: 据我所知,检查对象身份是否相等。由于没有强制

  • 问题内容: 我知道他们两个都禁用了Nagle的算法。 我什么时候应该/不应该使用它们中的每一个? 问题答案: 首先,不是所有人都禁用Nagle的算法。 Nagle的算法用于减少有线中更多的小型网络数据包。该算法是:如果数据小于限制(通常是MSS),请等待直到收到先前发送的数据包的ACK,同时累积用户的数据。然后发送累积的数据。 这将对telnet等应用程序有所帮​​助。但是,在发送流数据时,等待A