final fields initialized with a literal can elide a per-instance reference by
static keyword. Since the field is
final it is unmodifiable and
since its initializer is a literal the value is immutable and thus sharing a
per-class field is safe. This also allows a simpler constant load bytecode
instead of a field lookup.
That is, prefer this:
static final String string = "string"; static final int number = 42;
final String string = "string"; final int number = 42;
Suppress false positives by adding the suppression annotation
@SuppressWarnings("FieldCanBeStatic") to the enclosing element.