一次又一次,我遇到了一个只包含静态方法的实用程序类的情况。
问题不是关于自己拥有此类的事实,而是关于实用程序类的辩论。我们只是假设有一个用例,该类有意义。
现在,我看到了防止实例化/扩展的不同可能性:
私有构造函数和最终类
使用枚举而不是类
最佳做法是什么?您能否详细说明这两种可能性的优点/缺点?
就我个人而言,我更喜欢枚举解决方案,因为它完全防止了开箱即用的实例化和扩展,但是也许我错了。
已经谢谢你了!
最佳答案
我希望前者。
首先,在编写实用程序类时,我一直都在使用带有私有构造函数的最终类。我什至从未想过使用枚举。
不使用枚举的主要原因是,您仍然可以在技术上编写如下代码:
MyEnum var = MyEnum.valueOf("Hello");
而且编译器没有说什么,甚至IntelliJ IDEA也没说!