Java Assert 示例

10 Sept 2024 | 5 分钟阅读

在本节中,我们将学习Java中的断言操作及其相应的示例。我们还将学习断言的类型。

Java中的断言是什么?

关键字“assert”在Java中执行断言操作。断言的概念允许程序员验证程序执行期间所做的假设。换句话说,该过程允许检查和验证程序中实际定义的假设的质量和正确性。关键字“assert”是从Java 1.4版本开始引入的。在Java编程语言本身的发明早期,该关键字就被引入到语言中。

断言的概念主要对软件开发人员有用,而不是对测试人员。因此,可以说这个概念对开发人员起着非常重要和关键的作用。对于每次断言的执行,开发人员都期望它是正确的。否则,如果断言失败并返回false,则编译器将显示一个错误,表示“AssertionError”。关键字“assert”也使代码更具可读性,并有助于代码优化。“assert”关键字通常与布尔表达式关联,该表达式可以是false或true,因为断言操作的意图与布尔值匹配。

声明和使用assert关键字的语法(类型1)

assert关键字可以使用两种不同的方式,这两种方式上面已经讨论过。第二种方式涉及两个表达式,这两个表达式都用assert关键字声明,以便这两个表达式彼此相关。

声明和使用assert关键字的语法(类型2)

如何在Java中启用和使用断言?

为了在Java中使用断言,我们不需要导入任何包或使用任何库,因为所有内容都可以通过单个关键字“assert”来运行。所以,如果我们想在Java中使用和启用断言,我们必须使用一个命令行参数来促进和启用关键字“assert”。命令行参数是“-ea”或“-enableassertions”,其中第一个命令行参数是第二个命令行参数的简写形式。

每次执行后,断言操作将默认禁用,并且禁用关键字的过程由JVM(Java虚拟机)完成。这是为了在出现与新JVM版本冲突的命名冲突时提供预先保护。因此,在退出之前,JVM会自动禁用断言验证,以确保在下一个程序的执行过程中不会出现任何问题。

断言也可以为指定的类和包启用。例如,让我们考虑一个包含主类“Demo”的程序,文件名为“Demo”。为了仅为包含Demo类的程序启用断言,我们可以使用命令行参数来启用它。同样,可以通过使用命令行参数“-da”或“-disableassertions”来禁用断言。指定的类、包和文件也可以通过禁用这些指定的类、文件、包等的断言来限制使用断言。这样,就可以在Java中进行断言的启用和禁用。

启用Java中断言的命令行参数

(或)

启用Java中特定类或特定文件断言的命令行参数

(或)

禁用Java中断言的命令行参数

(或)

禁用Java中特定类或特定文件断言的命令行参数

(或)

为什么我们应该在Java中使用断言?

对于任何任务要完美地处理和执行,程序员必须了解并确信整个程序中做出的假设。如果所有假设都是错误的,整个程序将变得很差。因此,为了确保这一点,必须在程序的各个部分使用断言。

AssertionError处理

AssertionError是一种未检查的错误。因此,使用断言的方法特别不需要声明它们,并且调用代码不应尝试捕获AssertionError。由于AssertionError是一种未检查的错误,其类继承自Error,而Error又继承自Throwable。与程序中的不同异常不同,断言通常在运行时处理。这些异常用于表示不可恢复的条件。因此,绝不应尝试恢复或处理AssertionError。

使用断言时需要注意的事项

断言可以被程序员禁用。我们永远不应假设它们将在程序执行期间包含。因此,程序员在使用断言时必须牢记某些事项。它们是:

  1. 使用断言时,必须始终检查null值和空的Optional。
  2. 使用IllegalArgumentException或NullPointerException等未检查异常来检查公共方法的输入,而不是使用断言。
  3. 断言可用于代码永远不会执行的地方,例如switch语句的默认情况或永不终止的循环之后。
  4. 不要在断言条件中调用方法。将从方法获得的结果分配给局部变量,并使用该变量与assert关键字。
  5. 断言可用于在方法开始时检查条件。
  6. 不应使用assert检查开发人员代码中的私有参数,因为开发人员自己可能想检查他对参数的假设。
  7. 不应在程序的命令行参数上使用断言。

一个演示Java断言的程序

输出

Age of the person is 15

在上面的程序中,我们在两个表达式上使用了assert关键字,即18和“你不能有执照”。因此,断言通过比较相关表达式来检查我们的假设是真是假。另外,如上所述,assert未包含在执行中。最后,通过确定该人的年龄为15岁,我们获得了预期的输出。

结论

在本文中,我们了解到Java中的Assert关键字并不是Java编程语言的一个广为人知的特性。它有助于从程序中移除样板代码,使代码对于用户来说更具可读性和便捷性。在代码中使用断言有助于在早期阶段识别错误,这有助于有效的程序开发。最后,我们应该始终记住,断言默认情况下是未启用的。它们应该由程序员自己手动启用或禁用。否则,它们将在代码中使用时被执行。