我想知道人们如何决定是否将方法定义为静态。我知道,如果方法不需要访问实例字段,则只能将其定义为静态方法。因此,假设我们有一个不访问实例字段的方法,您是否始终将此类方法定义为静态方法,或者仅在需要静态调用它时(不引用实例)。
也许问同一问题的另一种方式是您使用静态还是非静态作为默认值?
请您参考如下方法:
只要有可能,我都会使用静态方法。优点:
- 当从实例方法内部调用静态方法时,您可以确保对当前对象的状态没有副作用。
- 在静态方法内部,您可以确保不会意外修改对象实例的任何状态。
- 您可以从类外部使用静态方法,而无需构造实例。如果可以使该方法成为静态方法,那么它显然不需要实例,因此也不需要实例。
- 静态方法可能稍微更高效,因为不需要传递“this”指针,也不需要动态调度。