对于只有静态字段和方法的类来说,这是不好的做法吗?

Ste*_*ins 70 oop static class

我有一个包含静态成员变量和静态方法的类.从本质上讲,它是一个通用的实用类.

类只包含静态成员变量和静态方法是不好的做法吗?

dan*_*ben 88

不,我根本不这么认为.更糟糕的做法是让一个完整的实例方法的类实际上不依赖于特定的实例.使它们静态告诉用户他们打算如何使用它们.此外,您可以通过这种方式避免不必要的实例化.

编辑:作为一个事后的想法,一般来说,我认为避免使用语言功能"只是因为",或者因为你认为那是"Java方式",这很好.我记得我的第一份工作,我有一个充满静态实用方法的课程,其中一位高级程序员告诉我,我并没有充分利用Java的OO能力,使我的所有方法都"全局化".6个月后她没有加入团队.

  • 哈 - 不是我的意思 (7认同)

Fin*_*las 19

只要该类没有内部状态,并且本质上是所谓的叶类(实用程序类属于此类),换句话说,它独立于其他类.没事.

这个Math班是一个很好的例子.


Jas*_*n S 13

听起来很合理.

注意:执行此操作的类通常只有一个私有的无参数构造函数,以便编译器在程序员尝试创建静态类的实例时产生错误.

  • 私有默认构造函数也会阻止对静态类进行子类化. (4认同)
  • 在这种情况下,防止子类别是"专业人士".在您的项目中工作的其他人可能会意外地尝试对静态类进行子类化(通过拼写错误或误解).通过添加私有默认构造函数,您可以通过更严格地强制使用它来为您的类添加更多含义. (4认同)
  • 将类定为最终类也可以防止子分类。 (2认同)

Mic*_*ter 9

静态方法不会让我担心(测试除外).

通常,静态成员是一个问题.例如,如果您的应用是群集的,该怎么办?启动时间怎么样 - 正在进行什么样的初始化?有关这些问题及其他问题的考虑,请查看Gilad Bracha 撰写的这篇文章.

  • 用于区分静态函数(精细)和静态(可疑)的+1 (2认同)