没有值的java枚举和带有私有构造函数的实用程序类之间的区别
2022-09-01 04:58:25
对实用程序类执行的一个常见操作是为它们提供一个私有构造函数:
public final class UtilClass {
private UtilClass() {}
...
}
但不幸的是,有些工具不喜欢这个私有构造函数。他们可能会警告说,它从未在类中被调用,测试未涵盖它,该块不包含注释等。
如果您这样做,则许多警告会消失:
public enum UtilClass {;
...
}
我的问题是:除了对未来开发人员无休止的仇恨之外,没有值的枚举和Java中具有私有构造函数的类之间有什么重要的区别?
请注意,我不是在问Java枚举与具有公共静态最终字段的类相比有什么优势?我不是在决定一个事物列表应该是一堆常量还是一个枚举之间,而是在将一堆函数放在无构造函数类或无值枚举之间做出决定。
另请注意,我实际上并不想这样做。我只是想知道作为一般语言知识的一部分的权衡。
例如,使用枚举会用无用的方法污染自动完成,例如。还有哪些其他缺点?好处?UtilClass.values()