title: Why is it considered good practice to mark method parameters as final?
body: <p>Let's say i have a method being called by passing an object.</p>
  
  <pre><code>public String retrieveXyz(Criteria criteria){
  
  //get some info out of criteria and do something.
  
  }
  </code></pre>
  
  <p>Is it a good practice to make the criteria final so that this handler cannot be used to target some other object other than the passed one or its an overhead as this doesn't protect the object state from getting changed. </p>
  
  <pre><code>public String retrieveXyz(final Criteria criteria){
  
  //get some info out of criteria and do something.
  
  }
  </code></pre>