我正在尝试定义一个基类(SubStatus
) 为枚举。
什么时候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);
}
}
Status
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);
}
}
当第一次调用枚举时但创建了所有枚举值之后,将处理静态块。顺便说一句,你的代码将无法工作。 Java 枚举中没有继承。如果您需要这样的东西,请使用接口。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)