Static finals can get baked into the class.
i.e.
public class Foo {
public static final String A_STRING="A_STRING";
}
public class Bar {
public void printString() { System.out.println(Foo.A_STRING);}
}
Now compile both, then change "Foo" and recompile Foo but not Bar. Bar will still print out the old value of A_STRING. To experience this for yourself, run locally in eclipse, which silently recompiles all of your classes, and then do an incremental update on a server. Hey, where'd my changes go?