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

Discussion

Which line is an inappropriate use of an assertion?

public class Sample09
{
    public void setRate(int rate)
    {
        assert rate > 0 : "rate must be positive";
        this.rate = rate;
    }

    private int rate;
}

  • A.assert rate > 0 : "rate must be positive";
  • B.this.rate = rate;
  • C.private int rate;
  • D.Nothing here is inappropriate.

Answer: A

setRate is public, so the restriction on rate is part of its published contract and must hold whether or not assertions are enabled. Run without -ea this check disappears and an invalid rate is stored silently. A public method enforces its preconditions with an explicit test that throws IllegalArgumentException; assertions belong in non-public methods.

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

Post your comment

Please log in or register to post a comment.