一次又一次我遇到的情况是我的实用程序类只包含静态方法。
问题不在于将这类课程当作自己的事实,所以不是关于实用类的辩论。我们假设有一个用例,这个类是有意义的。
现在我已经看到了防止实例化/扩展的不同可能性:
这里的最佳做法是什么?你能详细说明这两种可能性的好处/缺点吗?
我个人更喜欢枚举解决方案,因为它完全可以防止实例化和扩展开箱即用,但也许我错了。
谢谢你!
答案 0 :(得分:4)
我更喜欢前者。
首先,在我编写实用程序类时,我一直在使用带有私有构造函数的final类。我从来没有想过使用枚举。
不使用枚举的主要原因是你仍然可以在技术上写下这样的东西:
MyEnum var = MyEnum.valueOf("Hello");
并且编译器没有说出任何关于它的事情,甚至不是IntelliJ IDEA!