diff --git a/flexmark-util-misc/src/main/java/com/vladsch/flexmark/util/misc/BitFieldSet.java b/flexmark-util-misc/src/main/java/com/vladsch/flexmark/util/misc/BitFieldSet.java index f1b86a63a..62fb72ca3 100644 --- a/flexmark-util-misc/src/main/java/com/vladsch/flexmark/util/misc/BitFieldSet.java +++ b/flexmark-util-misc/src/main/java/com/vladsch/flexmark/util/misc/BitFieldSet.java @@ -3,7 +3,6 @@ import org.jetbrains.annotations.NotNull; import java.io.Serializable; -import java.lang.reflect.Field; import java.util.AbstractSet; import java.util.Collection; import java.util.Iterator; @@ -36,26 +35,19 @@ static class UniverseLoader { @SuppressWarnings("rawtypes") @NotNull - public static Enum[] getUniverseSlow(Class elementType) { + public static > Enum[] getUniverseSlow(Class elementType) { assert (elementType.isEnum()); Enum[] cachedUniverse = enumUniverseMap.get(elementType); if (cachedUniverse != null) return cachedUniverse; - Field[] fields = elementType.getFields(); - int enums = 0; - for (Field field : fields) { - if (field.getType().isEnum()) enums++; - } - + E[] constants = elementType.getEnumConstants(); + int enums = constants.length; if (enums > 0) { cachedUniverse = new Enum[enums]; enums = 0; - for (Field field : fields) { - if (field.getType().isEnum()) { - //noinspection unchecked - cachedUniverse[enums++] = Enum.valueOf((Class) field.getType(), field.getName()); - } + for (E constant : constants) { + cachedUniverse[enums++] = constant; } } else { cachedUniverse = ZERO_LENGTH_ENUM_ARRAY;