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

Discussion

Which line stops working when the program is run without -ea?

public class Sample14
{
    public static void main(String[] args)
    {
        StringBuilder sb = new StringBuilder("ba");
        assert sb.reverse().length() == 2;
        System.out.println(sb);
    }
}

  • A.The output is the same either way.
  • B.assert sb.reverse().length() == 2;
  • C.StringBuilder sb = new StringBuilder("ba");
  • D.System.out.println(sb);

Answer: B

reverse() mutates the builder in place rather than returning a copy, so the assertion quietly changes the object it is inspecting. With -ea the program prints ab and without it ba. A condition that must be safe to skip cannot call a mutating method.

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

Post your comment

Please log in or register to post a comment.