Задать вопрос
HustleCoder
@HustleCoder

Как проверить, что данный элемент входит в enum?

Добрый день! Возник вопрос:
Есть ли какой-то простой способ проверки принадлежности элемента перечислению?
Или для этого в каждом енаме нужно писать отдельную функцию?

Например:
import java.util.Scanner;

public class Main {
    enum TestEnum { 
        One(1), Two(3), Three(3);
        
        private int code;
        
        TestEnum(int code) {
            this.code = code;
        }
    }
    
	public static void main(String[] args) {
	    int n = new Scanner(System.in).nextInt();
	    System.out.println("n in TestEnum?");
	}
}
  • Вопрос задан
  • 4201 просмотр
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
xez
@xez Куратор тега Java
TL Junior Roo
Java 8+
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    enum TestEnum {
        One(1), Two(2), Three(3);

        private int code;

        TestEnum(int code) {
            this.code = code;
        }
    }

    public static void main(String[] args) {
        int n = new Scanner(System.in).nextInt();
        boolean isPresent = Arrays.stream(TestEnum.values()).anyMatch(element -> element.code == n);
        System.out.println("n in TestEnum? " + isPresent);
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
у класса Enum
есть статический метод чтобы узнать это
import java.lang.Enum;
import java.lang.IllegalArgumentException;

public class EvalEnum {
	enum MyEnum {
		One(1), Two(2), Three(3);

		private int code;

		MyEnum(int code) {
			this.code = code;
		}
	}

	public static void main(String[] args) {
		System.out.println(
				String.format("%s in MyEnum? %b", args[0], isPresent(args[0])));
	}

	private static boolean isPresent(String data) {

		try {
			Enum.valueOf(MyEnum.class, data);
			return true;
		} catch (IllegalArgumentException e) {
			return false;
		}
	}
}

java EvalEnum One
One in MyEnum? true

java EvalEnum Zero
Zero in MyEnum? false
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы