Just a very tiny clean-up. There are some places in JDK code base where we call `Enum.class.getEnumConstants()` to get all the values of the referenced `enum`. This is excessive, less-readable and slower than just calling `Enum.values()` as in `getEnumConstants()` we have volatile access:
public T[] getEnumConstants() { T[] values = getEnumConstantsShared(); return (values != null) ? values.clone() : null; } private transient volatile T[] enumConstants; T[] getEnumConstantsShared() { T[] constants = enumConstants; if (constants == null) { /* ... */ } return constants; } Calling values() method is slightly faster: @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.NANOSECONDS) @Fork(jvmArgsAppend = {"-Xms2g", "-Xmx2g"}) public class EnumBenchmark { @Benchmark public Enum[] values() { return Enum.values(); } @Benchmark public Enum[] getEnumConstants() { return Enum.class.getEnumConstants(); } private enum Enum { A, B } } Benchmark Mode Cnt Score Error Units EnumBenchmark.getEnumConstants avgt 15 6,265 ± 0,051 ns/op EnumBenchmark.getEnumConstants:·gc.alloc.rate avgt 15 2434,075 ± 19,568 MB/sec EnumBenchmark.getEnumConstants:·gc.alloc.rate.norm avgt 15 24,002 ± 0,001 B/op EnumBenchmark.getEnumConstants:·gc.churn.G1_Eden_Space avgt 15 2433,709 ± 70,216 MB/sec EnumBenchmark.getEnumConstants:·gc.churn.G1_Eden_Space.norm avgt 15 23,998 ± 0,659 B/op EnumBenchmark.getEnumConstants:·gc.churn.G1_Survivor_Space avgt 15 0,009 ± 0,003 MB/sec EnumBenchmark.getEnumConstants:·gc.churn.G1_Survivor_Space.norm avgt 15 ≈ 10⁻⁴ B/op EnumBenchmark.getEnumConstants:·gc.count avgt 15 210,000 counts EnumBenchmark.getEnumConstants:·gc.time avgt 15 119,000 ms EnumBenchmark.values avgt 15 4,164 ± 0,134 ns/op EnumBenchmark.values:·gc.alloc.rate avgt 15 3665,341 ± 120,721 MB/sec EnumBenchmark.values:·gc.alloc.rate.norm avgt 15 24,002 ± 0,001 B/op EnumBenchmark.values:·gc.churn.G1_Eden_Space avgt 15 3660,512 ± 137,250 MB/sec EnumBenchmark.values:·gc.churn.G1_Eden_Space.norm avgt 15 23,972 ± 0,529 B/op EnumBenchmark.values:·gc.churn.G1_Survivor_Space avgt 15 0,017 ± 0,003 MB/sec EnumBenchmark.values:·gc.churn.G1_Survivor_Space.norm avgt 15 ≈ 10⁻⁴ B/op EnumBenchmark.values:·gc.count avgt 15 262,000 counts EnumBenchmark.values:·gc.time avgt 15 155,000 ms ------------- Commit messages: - 8273140: Replace usages of Enum.class.getEnumConstants() with Enum.values() where possible Changes: https://git.openjdk.java.net/jdk/pull/5303/files Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=5303&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8273140 Stats: 13 lines in 4 files changed: 0 ins; 2 del; 11 mod Patch: https://git.openjdk.java.net/jdk/pull/5303.diff Fetch: git fetch https://git.openjdk.java.net/jdk pull/5303/head:pull/5303 PR: https://git.openjdk.java.net/jdk/pull/5303