枚举常量内的私有静态最终

问题描述 投票:0回答:1

我有这样的东西:

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;
      }
   },
java enums
1个回答
-1
投票

我不知道您要做什么,但是更高级别的用例是什么?像这样使用枚举是很常见的。

© www.soinside.com 2019 - 2024. All rights reserved.