Java中的静态方法和I / O.

时间:2017-12-07 01:40:37

标签: java apache io mocking static-methods

根据this anwer方法,I / O不是纯粹的功能'并且不应该是静止的。另一方面,this highly upvoted answer让我觉得如果我不需要任何对象来调用方法,它应该是静态的。

我有一个类,它只是帮助通过URL获取数据。该类只有一个方法可以进行一些url预处理,并在下面调用apache的IOUtils。它应该或不应该是静态的。该类没有任何状态,它可以修改的唯一状态就在它自身之外。

  1. 我知道静态方法很难测试,但是感觉更像是没有使用正确的依赖注入而不是使用静态方法的工件。 [1]
  2. 如果嘲笑执行I / O的静态方法,为什么apache的IOUtils具有从URL等获取字节的静态方法(例如:https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/IOUtils.html#toByteArray(java.net.URL)
  3. [1]为什么用静态方法注入类很难。这是设计的吗?我的意思是,我不想被迫传入java.lang.Class并使用反射来调用静态方法 - 同时感觉可怕和丑陋。我想要的是能够传递对具有某些功能的类(不是对象)的引用。即使是支持模拟静态方法的测试框架PowerMock也可以通过破解字节码来实现,我希望尽可能避免这种情况。

    围绕此事的一般指导是什么?

0 个答案:

没有答案