Я просматривал документацию и исходный код, потому что я хотел быть уверенным, что values () всегда будет возвращать массив в том порядке, в котором объявлены значения Enum. Оказывается, это не in the documentation, насколько я могу судить.Откуда Откуда: Enum.values ()?
Я проверил исходный код класса Enum и не повезло (there is a related, private "getValues" method).
Так что я предполагаю, что некоторые компилятор/интерпретатор-Foo уже происходит, чтобы создать класс, который расширяет Enum из заявления, как:
public static enum MyEnum
Так значение() также статический переведены в жестко закодированный массив во время компиляции? Или это метод, называемый во время выполнения, и если да, то где он определен?
Если вам это очень важно, это, вероятно, означает, что что-то сломается, если в объявлении перечисления вы будете перемещать вещи вокруг. Это очень хрупко. Поэтому я бы сказал, если вам все равно, у вас, вероятно, странный дизайн. Почему для вас важно, чтобы они были в порядке? –
+1 Только для названия. – Zoe
@Mark Peters - Потому что я использую перечисления для заказанных пунктов меню в нескольких местах. Конечно, я мог бы создать какую-то функцию упорядочения, которая вернула бы их в некотором порядке ... но почему? Он не сломается, если я их переведу, он просто изменит порядок, который будет представлен в приложении. – DougW