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?");
	}
}
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
@xez
Senior 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
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
XCritical Software Санкт-Петербург
До 370 000 ₽
Ланит-Терком Санкт-Петербург
от 90 000 до 130 000 ₽
19 сент. 2020, в 11:26
17500 руб./за проект
19 сент. 2020, в 10:21
10000 руб./за проект
19 сент. 2020, в 09:27
1000 руб./в час