一次又一次,我遇到了一个只包含静态方法的实用程序类的情况。



问题不是关于自己拥有此类的事实,而是关于实用程序类的辩论。我们只是假设有一个用例,该类有意义。



现在,我看到了防止实例化/扩展的不同可能性:


私有构造函数和最终类
使用枚举而不是类


最佳做法是什么?您能否详细说明这两种可能性的优点/缺点?



就我个人而言,我更喜欢枚举解决方案,因为它完全防止了开箱即用的实例化和扩展,但是也许我错了。

已经谢谢你了!

最佳答案

我希望前者。

首先,在编写实用程序类时,我一直都在使用带有私有构造函数的最终类。我什至从未想过使用枚举。

不使用枚举的主要原因是,您仍然可以在技术上编写如下代码:

MyEnum var = MyEnum.valueOf("Hello");


而且编译器没有说什么,甚至IntelliJ IDEA也没说!

10-08 17:13