 <p>The example method you provide </p> <pre><code>public SomeObject someObjectBehavior(final SomeObject oldSomeObject,final SomeObject newSomeObject) { if(oldSomeObject == null) { oldSomeObject = newSomeObject; //Assignment operation } } </code></pre> <p>is a perfect example of why making your parameters <code>final</code> is a Good Idea. Without making your variables <code>final</code>, you might not realize that your method does nothing, since reassigning a parameter reference doesn't change anything outside of your method. </p>