In Java we use final keyword with variables to specify its values are not to be changed. But I see that you can change the value in the constructor / methods of
final
When you make it static final it should be initialized in a static initialization block
private static final List foo; static { foo = new ArrayList(); } public Test() { // foo = new ArrayList(); foo.add("foo"); // Modification-1 }