Чтобы исправить вашу немедленную ошибку, вы можете сделать:
Color[] colors = Color.class.getEnumConstants();
Но это работает, только если Color
является перечислением. Согласно вашим комментариям, Color
относится к java.awt.Color
, что не является перечислением. Первый способ, предложенный связанным ответом, совершенно неправильный (может быть, это было 6 лет go?).
Насколько я знаю, лучшее, что вы можете здесь сделать, это перечислить их все. Там не так много - всего 13. Не похоже, что это число изменится в ближайшее время, так как AWT довольно стар, они вряд ли добавят новые цвета на этом этапе.
Для развлечения (это только для удовольствия), вы можете сделать это с отражением:
List<Color> colors = Arrays.stream(Color.class.getFields())
// fields of type Color, and in all caps, snake case
.filter(x -> x.getType() == Color.class && x.getName().matches("[A-Z_]+"))
.map(x -> {
try {
return (Color)x.get(null);
} catch (IllegalAccessException e) {
e.printStackTrace();
return Color.BLACK;
}
}).collect(Collectors.toList());
Обратите внимание, что отражение действительно медленное, поэтому ваш лучший выбор - жестко закодировать его .