Skip to content

Commit bcfe84a

Browse files
authored
Fix for issue #577, avoid using reflection (#578)
Signed-off-by: palexdev <[email protected]>
1 parent cc3a2f5 commit bcfe84a

File tree

1 file changed

+5
-13
lines changed

1 file changed

+5
-13
lines changed

flexmark-util-misc/src/main/java/com/vladsch/flexmark/util/misc/BitFieldSet.java

+5-13
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import org.jetbrains.annotations.NotNull;
44

55
import java.io.Serializable;
6-
import java.lang.reflect.Field;
76
import java.util.AbstractSet;
87
import java.util.Collection;
98
import java.util.Iterator;
@@ -36,26 +35,19 @@ static class UniverseLoader {
3635

3736
@SuppressWarnings("rawtypes")
3837
@NotNull
39-
public static Enum[] getUniverseSlow(Class elementType) {
38+
public static <E extends Enum<E>> Enum[] getUniverseSlow(Class<E> elementType) {
4039
assert (elementType.isEnum());
4140
Enum[] cachedUniverse = enumUniverseMap.get(elementType);
4241
if (cachedUniverse != null) return cachedUniverse;
4342

44-
Field[] fields = elementType.getFields();
45-
int enums = 0;
46-
for (Field field : fields) {
47-
if (field.getType().isEnum()) enums++;
48-
}
49-
43+
E[] constants = elementType.getEnumConstants();
44+
int enums = constants.length;
5045
if (enums > 0) {
5146
cachedUniverse = new Enum[enums];
5247

5348
enums = 0;
54-
for (Field field : fields) {
55-
if (field.getType().isEnum()) {
56-
//noinspection unchecked
57-
cachedUniverse[enums++] = Enum.valueOf((Class<Enum>) field.getType(), field.getName());
58-
}
49+
for (E constant : constants) {
50+
cachedUniverse[enums++] = constant;
5951
}
6052
} else {
6153
cachedUniverse = ZERO_LENGTH_ENUM_ARRAY;

0 commit comments

Comments
 (0)