Есть ли менее подробный способ получения не осуждаемых значений перечисления?

Смотрите мой код ниже. У меня есть enum, где некоторые значения помечены как устаревшие. Мне нужно Collection из всех значений enum, которые не являются устаревшими. Мне удалось выполнить задачу, используя рефлексию, но это выглядит слишком многословно для меня. Есть ли более чистый способ определить наличие тега @Deprecated?

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

public class DeprecatedEnumValues {

public enum MyEnum {
    AA,
    BB,
    @Deprecated CC,
    DD,
    @Deprecated EE,
}

public static void main(String[] args) {

    List<MyEnum> myNonDeprecatedEnumValues = new ArrayList<MyEnum>();

    for (Field field : MyEnum.class.getDeclaredFields()) {
        if (field.isEnumConstant() && !field.isAnnotationPresent(Deprecated.class)) {
            myNonDeprecatedEnumValues.add(MyEnum.valueOf(field.getName()));
        }
    }
    System.out.println(myNonDeprecatedEnumValues);
}
}
10
задан jeroen_de_schutter 17 January 2014 в 15:58
поделиться