why check validity only after doing a defensive copy?
<p>Please note this code:</p>

<pre><code>public Period(Date start, Date end) {
 this.start = new Date(start.getTime());
 this.end = new Date(end.getTime());
 if (this.start.compareTo(this.end) &gt; 0)
  throw new IllegalArgumentException(start +" after "+ end);
</code></pre>

<p>}</p>

<p>I do not see how it matters if the check for validity of parameters(ie the call to <code>compareTo()</code>) is done before defensively copying the mutable parameters to the constructor ? </p>
