返回信息流补充一下,问题的重点在于第二段代码,他用一个 enum 去放工具方法,而不是一个类。
一般来说,我们定义一个类来存放常量或静态方法,例如:
public final class Utils {
public static final void doSomething() {}
private Utils() {}
}
但今天看到一种写法:(注意那个分号)
public enum Utils {
;
public static void doSomething() {}
}
请问这么写有什么好处吗?
另外,我知道有一种单例的写法是这样的:
public enum Utils {
INSTANCE;
public void doSomething() {}
}
这和上面这种方式又有什么区别吗?
这是一条镜像帖。来源:北邮人论坛 / java / #41556同步于 2015/6/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
这种写法有什么好处呢?
kayla
2015/6/10镜像同步21 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
枚举在很大程度上可以看作一个普通的类,第二三种情况就是这个意思。
枚举独特的地方就是:“定义枚举自己的方法时,必须在enum实例序列的最后添加一个分号。同时Java要求你必须先定义enum实例。”(Java编程思想,第四版,592页)。
第三种只是第二种的一个具体应用场景(用来写单例),第二种是第一种的另一种形式(枚举形式的常量相关方法),好处不能一概而论,还是要看应用场景,编程思想里面有很多例子。