Machine-translated by Google. Questions are authored in English.
Top

Discussion

Which line is an inappropriate use of an assertion?

public class Sample91
{
    public static void main(String[] args)
    {
        boolean open = true;
        boolean locked = false;
        assert open = locked;
        System.out.println(open);
    }
}

  • A.System.out.println(open);
  • B.Every line above is correct as written.
  • C.assert open = locked;
  • D.boolean locked = false;

Answer: C

Both sides are boolean, so the assignment is a valid boolean expression and this compiles. It also overwrites open with false and then asserts that false, so it always fails under -ea and silently corrupts the variable without it. A single = where == was meant is at its most dangerous between two booleans.

No comment is present. Be the first to comment.
Loading…

Post your comment

Please log in or register to post a comment.