Regarding an immutable class
<p>I have the following query , I was going through Java immutable class concept and come up with the following analysis..</p>

<ul>
<li>All the fields must be private and preferably final</li>
<li>Ensure the class cannot be overridden - make the class final, or use static factories and  keep constructors private</li>
<li>Fields must be populated from the Constructor/Factory</li>
<li>Don't provide any setters for the fields</li>
<li>Watch out for collections. Use Collections.unmodifiable*. </li>
<li>Also, collections should contain only immutable Objects</li>
<li>All the getters must provide immutable objects or use defensive copying</li>
<li>Don't provide any methods that change the internal state of the Object.</li>
</ul>

<p>Now I have the following class..</p>

<pre><code>public final class Bill {

    private final int amount;
    private final DateTime dateTime;
    private final List&lt;Integers&gt; orders;

}
</code></pre>

<p>Please advise how it can be made as immutable class.</p>
