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.
Noncompliant code example
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;
}
Compliant solution
public enum Continent {
NORTH_AMERICA (23, 24709000),
// ...
EUROPE (50, 39310000);
private int countryCount;
private int landMass;
Continent(int countryCount, int landMass) {
// ...
}