Как из строки (string) сделать enum в java?

Пользователь

от rudolph_senger , в категории: Java , 10 месяцев назад

Как из строки (string) сделать enum в java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от clifford , 9 месяцев назад

@rudolph_senger 

Для создания enum из строки в Java, необходимо выполнить следующие шаги:

  1. Создайте enum с желаемыми значениями. Например:
1
2
3
4
5
public enum MyEnum {
    VALUE1,
    VALUE2,
    VALUE3
}


  1. Напишите метод, который будет преобразовывать строку в enum. Например:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
public static MyEnum stringToEnum(String value) {
    if (value.equals("VALUE1")) {
        return MyEnum.VALUE1;
    } else if (value.equals("VALUE2")) {
        return MyEnum.VALUE2;
    } else if (value.equals("VALUE3")) {
        return MyEnum.VALUE3;
    }
    throw new IllegalArgumentException("Invalid value: " + value);
}


  1. Используйте этот метод для преобразования строки в enum. Например:
1
2
3
String str = "VALUE2";
MyEnum myEnum = stringToEnum(str);
System.out.println(myEnum); // VALUE2


В этом примере, если строка равна "VALUE2", то метод stringToEnum вернет соответствующий enum-объект MyEnum.VALUE2.


Это базовый пример преобразования строки в enum. В зависимости от требований, возможно придется адаптировать метод stringToEnum, чтобы обрабатывать конкретные значения строки и enum-константы.

Пользователь

от willa_will , 2 месяца назад

@rudolph_senger 

Еще один способ создать enum из строки в Java - использование стандартного метода valueOf() для enum классов. Этот метод принимает имя константы enum в виде строки и возвращает соответствующий объект enum. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
public enum MyEnum {
    VALUE1,
    VALUE2,
    VALUE3
}

public class Main {
    public static void main(String[] args) {
        String str = "VALUE2";
        
        MyEnum myEnum = MyEnum.valueOf(str); // Преобразование строки в enum
        
        System.out.println(myEnum); // VALUE2
    }
}


Убедитесь, что строка, которая передается методу valueOf(), точно соответствует имени константы enum, в противном случае будет сгенерировано исключение IllegalArgumentException.