据我所知,每个枚举类型的预定义常量只有一个实例.那是对的吗?现在,假设存在一个名为enum的值的实例变量,并假设ONE是预定义的常量.如果为(1)实例修改了值,则会影响所有引用ONE的变量.但是当垃圾收集器摆脱枚举的所有实例时,值的值会发生什么?他们甚至被扔掉了吗?
例
这是一个简单的例子,其中有两个变量A和B,都指的是ONE.在第一次使用B之前,值的值被否定.如果垃圾收集器已经在行号B = Number.ONE;之前删除了ONE的实例,那么值的值将被“重置”回到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);
}
输出:
value: -1 value: -1
所以我的问题是,输出是否可以如下(如果说A = null;在使用B之前添加)?
value: -1 value: 1