For constant field declarations, you should use the immutable type (such as
ImmutableList) instead of the general collection interface type (such as
List). This communicates to your callers important semantic
This is consistent with Effective Java Item 52, which says to refer to
objects by their interfaces. Guava’s immutable collection classes offer
meaningful behavioral guarantees – they are not merely a specific
implementation as in the case of, say,
ArrayList. They should be treated as
interfaces in every important sense of the word.
That is, prefer this:
static final ImmutableList<String> COUNTRIES = ImmutableList.of("Denmark", "Norway", "Sweden");
static final List<String> COUNTRIES = ImmutableList.of("Denmark", "Norway", "Sweden");
TIP: Using the immutable type for the field declaration allows Error Prone to
prevent accidental attempts to modify the collection at compile-time (see
Suppress false positives by adding the suppression annotation
@SuppressWarnings("MutableConstantField") to the enclosing element.