## Why is this an issue?

There is no good reason to declare a field "public" and "static" without also declaring it "final". Most of the time this is a kludge to share a state among several objects. But with this approach, any object can do whatever it wants with the shared state, such as setting it to `null`.

### Noncompliant code example

    public class Greeter {
      public static Foo foo = new Foo();
      ...
    }

### Compliant solution

    public class Greeter {
      public static final Foo FOO = new Foo();
      ...
    }

## Resources

- CWE - CWE-500 - Public Static Field Not Marked Final
- CERT OBJ10-J. - Do not use public static nonfinal fields