final
fields initialized with a literal can elide a per-instance reference by
adding the 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;
Not this:
final String string = "string";
final int number = 42;
Suppress false positives by adding the suppression annotation @SuppressWarnings("FieldCanBeStatic")
to the enclosing element.