Перечисление Java со строками

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

Мы всегда должны создавать enum, когда у нас есть фиксированный набор связанных констант. Enum по своей сути являются singleton, поэтому они обеспечивают лучшую производительность.

1. Создание перечисления со строками

Программа Java для создания перечисления со строками. Данное перечисление содержит среды развертывания и соответствующие им URL-адреса. URL-адреса передаются конструктору перечисления для каждой константы перечисления.

public enum Environment{PROD("https://prod.domain.com:1088/"),SIT("https://sit.domain.com:2019/"),CIT("https://cit.domain.com:8080/"),DEV("https://dev.domain.com:21323/");private String url;Environment(String envUrl) {this.url = envUrl;}public String getUrl() {return url;}}

2. Итерация по константам Enum

Для итерации по списку перечислений используйте метод values() для типа перечисления, который возвращает все константы перечисления в массиве.

//Get all enumsfor(Environment env : Environment.values()){System.out.println(env.name() + " :: " + env.getUrl());}

Выход:

PROD :: https://prod.domain.com:1088/SIT :: https://sit.domain.com:2019/CIT :: https://cit.domain.com:8080/DEV :: https://dev.domain.com:21323/

3. Получение значения перечисления

Чтобы получить одно значение перечисления(например, получить URL-адрес продукта из константы перечисления), используйте созданный нами метод getUrl().

String prodUrl = Environment.PROD.getUrl();System.out.println(prodUrl);

Выход:

https://prod.domain.com:1088/

4. Получение Enum по имени

Если мы хотим получить константу перечисления, используя ее имя, то нам следует использовать метод valueOf().

Environment sitUrl = Environment.valueOf("SIT");System.out.println(sitUrl.getUrl());

Выход:

https://sit.domain.com:2019/

5. Обратный поиск — получение имени перечисления из значения

У нас часто будет значение enum, и нам нужно будет получить имя enum по его значению. Это достигается с помощью обратного поиска.

enum Environment{PROD("https://prod.domain.com:1088/"),SIT("https://sit.domain.com:2019/"),CIT("https://cit.domain.com:8080/"),DEV("https://dev.domain.com:21323/");private String url;Environment(String envUrl) {this.url = envUrl;}public String getUrl() {return url;}//****** Reverse Lookup ************//public static Optional<Environment> get(String url) {return Arrays.stream(Environment.values()).filter(env -> env.url.equals(url)).findFirst();}}

Чтобы использовать обратный поиск в коде приложения, используйте метод enum.get().

String url = "https://sit.domain.com:2019/";Optional<Environment> env = Environment.get(url);System.out.println(env.get());

Выход:

SIT
Прокрутить вверх