A final static field references an array and can be accessed by malicious code or by accident from another package. This code can freely modify the contents of the array.

So if you declare a field like:
public static final String[] CHECKIN_CHECKOUT_DATE_PATTERN = new String[] { "MM-dd-yyyy", "MM/dd/yyyy", "MM.dd.yyyy" };

You intended the array to be final however array elements are modifiable! Oops…

The final keyword was included in the Java language to assist developers in creating immutable classes, and enable compilers and runtime environments to optimize on the basis of declared immutability. However, while fields can be final, array elements cannot.