我有这样的东西:
version 1:
public enum Task {
START {
// how about the lifecycle of this static final int property?
private static final SubStart test = new SubStart();
@Override
public int getA(){
return test.getInt() + 1;
}
@Override
public int getB(){
return test.getInt() + 2;
}
},
..
}
我只有一个问题:
何时将静态属性初始化,并将其保留在内存中多长时间?
如果我调用Taks.START
,则test
为空,但是当我调用Task.START.getA()
时,则将初始化test
。这是懒惰的静态属性的一种吗?
我最好删除静态test
属性并将其放入方法中吗?
版本2:
public enum Task {
START {
@Override
public int getA(){
final SubStart test = new SubStart();
return test.getInt() + 1;
}
@Override
public int getB(){
final SubStart test = new SubStart();
return test.getInt() + 2;
}
},
我不知道您要做什么,但是更高级别的用例是什么?像这样使用枚举是很常见的。