 <p>Generally speaking, <code>final</code> would be more appropriate.</p> <p>The important thing about modifiers is that the alter the reference, not the object referenced. e.g.</p> <pre><code>final int[] a = { 0 }; a[0] = 5; // ok, not final a = b; // not ok as it is final </code></pre> <p>similarly</p> <pre><code>volatile int[] a = { 0 }; a[0] = 5; // not a volatile write a = b; // volatile write. </code></pre>