Срок жизни экземпляра перечисления JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Срок жизни экземпляра перечисления Java

Сообщение Anonymous »

Я понимаю, что для каждой предопределенной константы перечисленного типа существует один экземпляр. Это вообще правильно? Теперь предположим, что существует переменная экземпляра, называемая value перечисления, и предположим, что ONE — это предопределенная константа. Если значение изменено для экземпляра ONE, то это влияет на все переменные, ссылающиеся на ONE. Но что произойдет со значением value, когда сборщик мусора избавится от всех экземпляров перечисления? Их когда-нибудь выбрасывают?

Пример

Вот простой пример: пример, где есть две переменные A и B, обе ссылаются на ONE. Значение value инвертируется перед первым использованием B. Если бы сборщик мусора избавился от экземпляра ONE перед строкой Number B = Number.ONE;, то значение value было бы «сброшено» обратно на 1, Я полагаю. Это правильно?

Перечисление:

Код: Выделить всё

public enum Number
{
ONE(1), TWO(2), THREE(3);

int value;

Number(int value) { this.value = value; }

void negate() { value = -value; }

@Override
public String toString() { return "value: " + value; }
}
Основной метод:

Код: Выделить всё

public static void main(String[] args)
{
Number A = Number.ONE;
A.negate();
Number B = Number.ONE;

System.out.println(A + "   " + B);
}
Выход:


значение: -1 значение: -1


Поэтому мой вопрос заключается в том, может ли результат когда-либо быть следующим (если, скажем, A = null; добавляется перед использованием B)?


значение: -1 значение: 1
< /blockquote>

Подробнее здесь: https://stackoverflow.com/questions/313 ... m-instance
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»