我问是因为我正在尝试使用不允许您模拟静态方法的模拟框架(Mockito)。调查它,我发现很多博客文章说你应该尽可能少地使用静态方法,但我很难理解为什么。特别是为什么不修改全局状态并且基本上是辅助方法的方法。例如,我有一个名为的类ApiCaller
,它有几个静态方法。静态方法的目的之一是执行 HTTP 调用,处理我们的服务器可能返回的任何自定义问题(例如用户未登录)并返回响应。为了简化,类似:
public class ApiCaller {
...
public static String makeHttpCall(Url url) {
// Performs logic to retrieve response and deal with custom server errors
...
return response;
}
}
要使用它,我所要做的就是调用ApiCaller.makeHttpCall(url)
现在我可以轻松地将其设为非静态方法,例如:
public class ApiCaller {
...
public String makeHttpCall(Url url) {
// Performs logic to retrieve response and deal with custom server errors
...
return response;
}
}
然后使用这个方法调用new ApiCaller().makeHttpCall()
,但这似乎是额外的开销。谁能解释为什么这很糟糕,以及是否有更好的解决方案使方法成为非静态的(除了删除关键字之外),以便我可以使用模拟框架来存根这些方法?
谢谢!