有时候在编写类时,你需要一些辅助方法来处理一些简单的东西(以某种方式改变字符串或做一些简单的计算)。
如果辅助函数足够小(并且任何其他类都不需要),那么在这个类中编写一个辅助方法是有意义的。
现在:假设您不需要访问任何成员变量,那么最好使用此方法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");
}
}
在使方法成为静态或非静态方面是否有利有弊。是否有一般做和不做?
答案 0 :(得分:12)
我个人会将该方法设为静态 - 它使不依赖于对象的状态更清楚。这可能会在线程安全方面产生连锁效应(尽管如果要访问该类型的 static 成员,则需要注意这一点)。
鉴于它是私有的,您不必担心子类是否要覆盖它。
您可以随时将其设置为非静态 - 我认为唯一的副作用是可能会更改序列化ID。 (二进制序列化很痛苦。)
答案 1 :(得分:2)
如果需要访问非静态成员变量,请将其设置为非静态,如果不需要,则将其设置为静态。