class initialization in java
<p>Why does java allow this </p>

<pre><code>public class A {

    private int i;

    public A(int i){

    }

}
</code></pre>

<p>but not this</p>

<pre><code>public class A {

    private final int i;

    public A(int i){ // compile - time error

    }

}
</code></pre>

<p>What is the difference push the item to the stack when it is <strong>final</strong> ? Why doesn't it understand that A(i) is different than final int i ?</p>
