如果一个类没有状态,那么所有方法都应该是静态的吗?

时间:2014-02-11 13:49:05

标签: java oop static

假设我有一个Helper类,有几个方法

public class SomeClassesHelperClass(){

    public List removeDuplicatesFromTheGivenList(List someList){
    // code here 
    }

    public int returnNumberOfObjectsThatHaveSomeSpecialState(List someList){
    // code here
    }
}

使此类中的方法静态有哪些优点/缺点?哪种更好的做法?

3 个答案:

答案 0 :(得分:9)

如果您的课程提供实用工具方法(例如您的方法),我认为最好:

  • 制作课程final(没有必要对其进行扩展)
  • 定义аprivate构造函数以避免任何尝试创建类
  • 的实例
  • 制作所有方法static

答案 1 :(得分:4)

如果您决定将所有方法设为静态,那么您需要了解这将对您测试依赖它的其他类的能力产生的影响。

它严重限制了你嘲笑的选择(或者至少让它变得更加痛苦)

我认为我们的问题没有正确的答案 - 这取决于方法的作用。例如,很容易设想一个无状态数据访问对象 - 如果你把它的所有方法都设置为静态,那么你正在构建对你的测试周期中数据源的依赖,或者使你的模拟代码更加丑陋

答案 2 :(得分:1)

当它们不使用对象的状态时,使它们成为静态。其中大多数是辅助类,如数学。 http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html

相关问题