Что такое перечисления Java и почему они полезны?

Перечисление аналогично любому другому классу Java с предопределенным набором экземпляров. Это, в основном, тип данных, который позволяет описывать каждый элемент типа более читаемым и надежным способом, например, уровень температуры, такой как Высокий, Средний и Низкий.

 
public enum Temperature {
    HIGH,
    MEDIUM,
    LOW
}

Главное преимущество Enum заключается в том, что он делает ваш код более явным, менее подверженным ошибкам и самодокументированным способом.

Когда следует использовать?

Вы можете использовать типы перечислений в любое время, когда вам нужно представлять фиксированный набор констант.

Вы можете использовать перечисления, когда переменная (особенно параметр метода) может принимать только один из небольшого набора возможных значений. Примерами могут быть такие дни, как дни недели (воскресенье, понедельник и т. Д.) Или направления (СЕВЕР, ЮЖНЫЙ, ВОСТОЧНЫЙ и ЗАПАД).

Вы можете использовать перечисление вместо класса, если класс должен иметь фиксированное количество перечислимых экземпляров.

Enum switch ... case Пример:

Вы также можете использовать тип перечисления в инструкции Java switch ... case. Вы можете использовать Enum в Java внутри оператора Switch, типа int или char примитивного типа данных.

Следующая программа показывает, как использовать Enum в switch ... case statement.

 
enum Directions {
	NORTH, SOUTH, EAST, WEST
}
public class SwitchCaseEnum {
	public static void main(String args[])
    {
		Directions direct;
		direct = Directions.WEST;
		switch(direct) {
			case NORTH:
				System.out.println("You chose NORTH!");
				break;
			case SOUTH:
				System.out.println("You chose SOUTH!");
				break;
			case EAST:
				System.out.println("You chose EAST!");
				break;
			case WEST:
				System.out.println("You chose WEST!");
				break;
			default:
				System.out.println("Invalid Direction....!!");
				break;
		}
	}
}

Enum if ... else Пример:

Вы также можете использовать тип перечисления в инструкции Java if..else. Следующая программа показывает, как использовать Enum в выражении if..else.

 
enum Directions {
	NORTH, SOUTH, EAST, WEST
	}
public class IfElseEnum {
	public static void main(String args[])
    {
		Directions direct;
		direct = Directions.WEST;
		getDirection(direct );
	}
	public static void getDirection(Directions dir)
   {
		if (dir == Directions.WEST)
			System.out.println("You selected WEST !!");
		else
			System.out.println("Invalid Direction !!");
	}
}

Enum for loop Пример:

В следующей программе Java показано, как использовать цикл Enum in for.

 
enum Directions {
	NORTH, SOUTH, EAST, WEST
}
public class LoopEnum
{
	public static void main(String[] args)
	{
		int cnt = 1;
		// петля через перечисление
		for (Directions dir: Directions.values())
		{
			System.out.printf("Direction -> %d = %s\n", cnt++, dir);
		}
	}
}

Точки для запоминания для Java Enum

  1. Enum считается более безопасным по типу, чем константы. Одним из распространенных способов использования перечислений является предотвращение возможность недопустимого параметра.

Например, рассмотрим обычный метод, например:

 
public void checkDay(int day);

Вышеуказанный метод не только двусмыслен (начинаются дневные индексы с 1 или 0?), Но вы можете дать недопустимые недопустимые данные, например, больше 7 или отрицательные числа. Вместо этого, если у вас есть перечисление DAYS с воскресеньем, понедельником и т. Д., Подпись становится:

 
public void checkDay(Days day);

Код, вызывающий этот метод, будет более читабельным и не может предоставлять неверные данные.

Использование enum над константами помогает с безопасностью типа, потому что если функция принимает перечисление, и вы передаете ему что-либо, кроме перечисления, компилятор будет жаловаться. С константами вы принимаете довольно большой диапазон данных, большинство из которых являются недопустимыми.

Использование enum над константами помогает с безопасностью типа, потому что если функция принимает перечисление, и вы передаете ему что-либо, кроме перечисления, компилятор будет жаловаться. С константами вы принимаете довольно большой диапазон данных, большинство из которых являются недопустимыми....

  1. Java.util.EnumSet & amp; Java.util.EnumMap: два класса были добавлены в Java.util для поддержки перечисления: EnumSet и EnumMap. Это высокопроизводительная реализация интерфейсов Set и Map соответственно.
  1. Все константы, определенные в перечислении, являются публичными статическими окончательными. Поскольку они являются статическими, к ним можно получить доступ через EnumName.instanceName.
  1. Перечисление может быть объявлено вне или внутри класса, но НЕ в методе.
  1. Добавление новых констант в Enum в Java легко и вы можете добавить новые константы, не нарушая существующие кода.

Источник: http://net-informations.com/Java/basics/enum.htm

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector