Classes final
Uma classe com este modificador não pode ser estendida, isto é, não pode ter classes que herdam dela.
Isso é importante para garantir que uma determinada implementação não tenha seu comportamento modificado. Isso tem muito a ver com a imutabilidade.
Tipos básicos do Java como String e Integer são final porque se espera que o conteúdo não possa ser modificado. O problema é que seu alguém pudesse criar uma subclasses de String, esta implementação poderia passar a ser mutável. Uma String mutável seria o caos na terra para implementações, pois vários pressupostos que os desenvolvedores usam no dia-a-dia seriam simplesmente desfeitos.
public final class String implements java.io.Serializable, Comparable, CharSequence { ... }
https://pt.stackoverflow.com/questions/17015/qual-o-uso-de-uma-vari%c3%a1vel-est%c3%a1tica-ou-final-em-java#17136