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

lei*_*ifg 4 java static private

有时在编写类时,您需要一些辅助方法来处理一些简单的东西(以某种方式更改字符串或进行一些简单的计算).

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

现在:假设你不需要访问任何成员变量,那么最好还是制作这个方法private或者private 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");
 }

}
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 12

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

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

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