java – 这些类和子类静态块何时执行(对于Enum)?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 这些类和子类静态块何时执行(对于Enum)?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1160字,纯文字阅读大概需要2分钟。
内容图文
我正在尝试为Enum定义一个基类(SubStatus).
下面称为静态块的时间是什么时候?如果它们是类而不是枚举,我相信它们会在调用类构造函数后调用它们?
但是因为它们是Enums,这些更像是静态类吗?因此,当容器加载静态实例时,可能会执行静态块?
子状态
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);
}
}
解决方法:
在第一次调用enum之后,但在创建了所有枚举值之后,将处理静态块.顺便说一句,你的代码将无法正常工作. Java枚举中没有继承.如果您需要这样的东西,请使用接口.
内容总结
以上是互联网集市为您收集整理的java – 这些类和子类静态块何时执行(对于Enum)?全部内容,希望文章能够帮你解决java – 这些类和子类静态块何时执行(对于Enum)?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。