Скажем, у нас есть объект Class
. Назовите его cls
.Листинг значений неизвестного enum
Теперь cls.isEnum()
возвращается true
Какая радость !!! Могу ли я, чтобы значения, перечисленные мне? (Не один сахар, не молоко)
Скажем, у нас есть объект Class
. Назовите его cls
.Листинг значений неизвестного enum
Теперь cls.isEnum()
возвращается true
Какая радость !!! Могу ли я, чтобы значения, перечисленные мне? (Не один сахар, не молоко)
getEnumConstants() метод объекта класса возвращает массив объектов
public static enum E {
A, B, C, D;
}
public static void main(String[] args) {
Class c = E.class;
for(Object b:c.getEnumConstants())
{
System.out.println(b);
}
}
Печать:
A
В
С
D
следующие основные:
GetEnumFields общественного класса {
public static enum Enum {
A, B, C, D;
}
public static void main(String[] args) {
Enum a = Enum.A;
Field[] declaredFields = a.getClass().getDeclaredFields();
for (int i = 0; i < declaredFields.length; i++) {
System.out.println(declaredFields[i]);
}
}
}
печатает:
public static final GetEnumFields$Enum GetEnumFields$Enum.A
public static final GetEnumFields$Enum GetEnumFields$Enum.B
public static final GetEnumFields$Enum GetEnumFields$Enum.C
public static final GetEnumFields$Enum GetEnumFields$Enum.D
private static final GetEnumFields$Enum[] GetEnumFields$Enum.ENUM$VALUES
Вы можете использовать EnumSet.allOf(Class<E>)
, где <E extends Enum<E>>
Дано:
public static enum Alphabet {
A, B, C, D;
}
Вы можете написать:
for (Enum<?> e : EnumSet.allOf(Alphabet.class)) {
System.out.println(e);
}
// A, B, C, D
я не могу использовать его без доступа к алфавиту. Скажем, есть класс cls = Alphabet.class и работает только с cls. –
@Joel: обход общей проверки типов сложный (я не думаю, что существует типичный способ сделать это, если вы начинаете с класса «>»), но я не уверен, что вы говорите. Это определенно работает, но 'Class.getEnumConstants()' лучше. – polygenelubricants
Спасибо за ваш ответ. Я посмотрел на него, узнал от него и отметил его полезным. Как вы полагаете, я принял ответ getEnumConstants(). Основная причина этого в том, что он не требует ничего другого, кроме самого объекта класса. –
+1; это лучший ответ! – polygenelubricants