What are assertions in Java and when should they be used?

assertion, java

Solution

Assertions (by way of the `assert` keyword) were added in Java 1.4. They are used to verify the correctness of an invariant in the code. They should never be triggered in production code, and are indicative of a bug or misuse of a code path. They can be activated at run-time by way of the `-ea` option on the `java` command, but are not turned on by default.

An example:

public Foo acquireFoo(int id) {
    Foo result = (id > 50) ? fooService.read(id) : new Foo(id);

    assert result != null;

    return result;
}

Problem

What are some real life examples to understand the key role of the Java `assert` keyword?

Original source

Related problems