Смотрите мой код ниже. У меня есть 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);
}
}