据我所知,每个枚举类型的预定义常量只有一个实例.那是对的吗?现在,假设有一个名为valueenum 的实例变量,假设ONE是一个预定义的常量.如果value为(的)实例修改了,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; }
}
Run Code Online (Sandbox Code Playgroud)
主要方法:
public static void main(String[] args)
{
Number A = Number.ONE;
A.negate();
Number B = Number.ONE;
System.out.println(A + " " + B);
}
Run Code Online (Sandbox Code Playgroud)
输出:
值:-1值:-1
所以我的问题是,输出可以是以下(如果说A = null;之前添加B使用)?
值:-1值:1
| 归档时间: |
|
| 查看次数: |
677 次 |
| 最近记录: |