Как values () реализованы для перечислений Java 6?
В Java вы можете создать перечисление следующим образом:
public enum Letter {
A, B, C, D, E, F, G;
static {
for(Letter letter : values()) {
// do something with letter
}
}
}
Этот вопрос касается & quot; values () & quot; метод. В частности, как это реализовано? Обычно я могу перейти к исходному коду для классов Java, используя F3 или CTRL + Click в Eclipse (даже для таких классов, как String, Character, Integer и даже Enum). Можно просмотреть источник других методов перечисления (например, valueOf (String)).
Имеет ли "значения ()" создать новый массив каждый раз, когда он вызывается? Если я присваиваю его локальной переменной, а затем изменяю один из элементов, что происходит (очевидно, это не повлияет на значение, возвращаемое values (), что подразумевает, что каждый раз выделяется новый массив).
Код для него родной? Или JVM / компилятор обрабатывает это специально, возвращая новый экземпляр из values () только тогда, когда он не может доказать, что он не будет изменен.