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

Discussion

Which line contains the error?

public class Sample70
{
    private final int size;

    Sample70(int size)
    {
        assert size > 0;
        this.size = size;
    }

    Sample70()
    {
        this(0);
    }

    public static void main(String[] args)
    {
        new Sample70();
    }
}

  • A.No line here is in error.
  • B.this(0);
  • C.assert size > 0;
  • D.private final int size;

Answer: B

The no-argument constructor chains to the other one with a value its own assertion forbids, so the class cannot be constructed that way under -ea. The assertion is a reasonable statement of the invariant; the convenience constructor contradicts it. Either the default should be valid or the invariant is wrong.

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

Post your comment

Please log in or register to post a comment.