|
3 | 3 | import org.jetbrains.annotations.NotNull;
|
4 | 4 |
|
5 | 5 | import java.io.Serializable;
|
6 |
| -import java.lang.reflect.Field; |
7 | 6 | import java.util.AbstractSet;
|
8 | 7 | import java.util.Collection;
|
9 | 8 | import java.util.Iterator;
|
@@ -36,26 +35,19 @@ static class UniverseLoader {
|
36 | 35 |
|
37 | 36 | @SuppressWarnings("rawtypes")
|
38 | 37 | @NotNull
|
39 |
| - public static Enum[] getUniverseSlow(Class elementType) { |
| 38 | + public static <E extends Enum<E>> Enum[] getUniverseSlow(Class<E> elementType) { |
40 | 39 | assert (elementType.isEnum());
|
41 | 40 | Enum[] cachedUniverse = enumUniverseMap.get(elementType);
|
42 | 41 | if (cachedUniverse != null) return cachedUniverse;
|
43 | 42 |
|
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; |
50 | 45 | if (enums > 0) {
|
51 | 46 | cachedUniverse = new Enum[enums];
|
52 | 47 |
|
53 | 48 | 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; |
59 | 51 | }
|
60 | 52 | } else {
|
61 | 53 | cachedUniverse = ZERO_LENGTH_ENUM_ARRAY;
|
|
0 commit comments