пример:
public class CurrencyDenom {
public static final int PENNY = 1;
public static final int NICKLE = 5;
public static final int DIME = 10;
public static final int QUARTER = 25;}
Ограничение констант Java
1) Нет безопасности типа : Прежде всего, это небезопасно; Вы можете назначить любое допустимое значение типа int, например, 99, хотя нет монеты, чтобы представить это значение.
2) Нет значимой печати : при печати значения любой из этих констант будет напечатано ее числовое значение вместо значимого имени монеты, например, когда вы печатаете NICKLE, он напечатает «5» вместо «NICKLE»
3) Нет пространства имен : для доступа к константе currencyDenom нам необходимо добавить префикс имени класса, например. CurrencyDenom.PENNY вместо простого использования PENNY, хотя это также может быть достигнуто с помощью статического импорта в JDK 1.5
Преимущество enum
1) Перечисления в Java являются типобезопасными и имеют собственное пространство имен. Это означает, что ваше перечисление будет иметь тип, например, «Валюта» в приведенном ниже примере, и вы не можете назначать никакие значения, кроме указанных в константах перечисления.
public enum Currency {PENNY, NICKLE, DIME, QUARTER};
Currency coin = Currency.PENNY;
coin = 1; //compilation error
2) Enum в Java - это ссылочный тип, такой как класс или интерфейс, и вы можете определить конструктор, методы и переменные внутри java Enum, что делает его более мощным, чем Enum в C и C ++, как показано в следующем примере типа Java Enum.
3) Вы можете указать значения констант enum во время создания, как показано в примере ниже:
public enum Currency {PENNY (1), NICKLE (5), DIME (10), QUARTER (25)};
Но чтобы это работало, вам нужно определить переменную-член и конструктор, потому что PENNY (1) фактически вызывает конструктор, который принимает значение int, см. Пример ниже.
public enum Currency {
PENNY(1), NICKLE(5), DIME(10), QUARTER(25);
private int value;
private Currency(int value) {
this.value = value;
}
};
Ссылка: https://javarevisited.blogspot.com/2011/08/enum-in-java-example-tutorial.html