enum
s are generally thought of as constant, but an enum
with a public
field or public
setter is
non-constant. Ideally fields in an enum
are private
and set in the constructor, but if that’s not possible, their visibility
should be reduced as much as possible.
public enum Continent { NORTH_AMERICA (23, 24709000), // ... EUROPE (50, 39310000); public int countryCount; // Noncompliant private int landMass; Continent(int countryCount, int landMass) { // ... } public void setLandMass(int landMass) { // Noncompliant this.landMass = landMass; }
public enum Continent { NORTH_AMERICA (23, 24709000), // ... EUROPE (50, 39310000); private int countryCount; private int landMass; Continent(int countryCount, int landMass) { // ... }