私有静态方法在课堂上的优缺点?

时间:2011-08-10 08:23:26

标签: java static private

有时候在编写类时,你需要一些辅助方法来处理一些简单的东西(以某种方式改变字符串或做一些简单的计算)。

如果辅助函数足够小(并且任何其他类都不需要),那么在这个类中编写一个辅助方法是有意义的。

现在:假设您不需要访问任何成员变量,那么最好使用此方法privateprivate static

以下示例:只实现一个方法,检查字符串是否不是null并包含foo。

public class SomeClass

...

 public void calculate(String inputString) {
  ...
  boolean foo = getFoo(inputString);
 }

 private (static) boolean getFoo(String inputString) {
  return inputString != null && inputString.contains("foo");
 }

}

在使方法成为静态或非静态方面是否有利有弊。是否有一般做和不做?

2 个答案:

答案 0 :(得分:12)

我个人会将该方法设为静态 - 它使依赖于对象的状态更清楚。这可能会在线程安全方面产生连锁效应(尽管如果要访问该类型的 static 成员,则需要注意这一点)。

鉴于它是私有的,您不必担心子类是否要覆盖它。

您可以随时将其设置为非静态 - 我认为唯一的副作用是可能会更改序列化ID。 (二进制序列化很痛苦。)

答案 1 :(得分:2)

如果需要访问非静态成员变量,请将其设置为非静态,如果不需要,则将其设置为静态。