假设我有一个Helper类,有几个方法
public class SomeClassesHelperClass(){
public List removeDuplicatesFromTheGivenList(List someList){
// code here
}
public int returnNumberOfObjectsThatHaveSomeSpecialState(List someList){
// code here
}
}
使此类中的方法静态有哪些优点/缺点?哪种更好的做法?
答案 0 :(得分:9)
如果您的课程提供仅实用工具方法(例如您的方法),我认为最好:
final
(没有必要对其进行扩展)private
构造函数以避免任何尝试创建类static
。答案 1 :(得分:4)
如果您决定将所有方法设为静态,那么您需要了解这将对您测试依赖它的其他类的能力产生的影响。
它严重限制了你嘲笑的选择(或者至少让它变得更加痛苦)
我认为我们的问题没有正确的答案 - 这取决于方法的作用。例如,很容易设想一个无状态数据访问对象 - 如果你把它的所有方法都设置为静态,那么你正在构建对你的测试周期中数据源的依赖,或者使你的模拟代码更加丑陋
答案 2 :(得分:1)
当它们不使用对象的状态时,使它们成为静态。其中大多数是辅助类,如数学。 http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html