Silently ignoring invalid input and doing nothing in the method is extremely poor advice because it hides the problem.
static final constants use a different naming convention than other variables. The compiler ensures that we don't try to reassign the final values to point to a different object, like another Array List in this case.
Let's try another example to make sure you understand the distinction: Line 1 declares a static variable that is not final. Line 2 declares a final variable without initializing it.
This means we can initialize it exactly once in a static block.
The statements run and assign any static variables as needed.
The final variables are allowed to be reassigned for the first time in the static initializer.