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