Я пытаюсь определить базовый класс (SubStatus) для Enum.
Когда находятся блоки static, называемые ниже? Если они были классами, а не перечислениями, я считаю, что они будут вызваны после вызова класса конструктора?
Но поскольку они Enum s, не являются ли они больше похожими на классы static? Итак, возможно, статические блоки выполняются, когда контейнер загружает статические экземпляры?
Подстатус
public enum SubStatus
{
     WAITING(0),
     READY(1);
     protected static final Map<Integer,SubStatus> lookup 
          = new HashMap<Integer,SubStatus>();
     static {
          for(SubStatus s : EnumSet.allOf(SubStatus.class))
               lookup.put(s.getCode(), s);
     }
     protected int code;
     protected SubStatus(int code) {
          this.code = code;
     }
     public int getCode() { return code; }
     public static SubStatus get(int code) { 
          return lookup.get(code); 
     }
}
Состояние
public enum Status extends SubStatus
{
     SKIPPED(-1),
     COMPLETED(5);
     private static final Map<Integer,Status> lookup 
          = new HashMap<Integer,Status>();
     static {
          for(Status s : EnumSet.allOf(Status.class))
               lookup.put(s.getCode(), s);
     }
     private int code;
     private Status(int code) {
          this.code = code;
     }
     public int getCode() { return code; }
     public static Status get(int code) { 
          return lookup.get(code); 
     }
}
