Java's `final` while useful for primitives, it is not really that useful for reference types, which constitute the majority of types.They are if you use them in conjunction with immutable classes, such as Guava's immutable collections.
Unfortunately, immutability is only a promise and not typed. But in practice, having a member that is final and of an immutable class works well.