【问题标题】:Should I use static import?我应该使用静态导入吗?
【发布时间】:2011-02-17 00:42:43
【问题描述】:

将我的所有导入转换为static import 有多重要?为什么人们仍然不愿意使用static import?

【问题讨论】:

标签: java import


【解决方案1】:

正如文档所说,使用它sparingly。在那里寻找理由。

【讨论】:

  • 好答案,没想到要查源!
【解决方案2】:

这是一个特殊情况,但也是完美的用例(我在所有测试中都使用它):

import static junit.framework.Assert.*;

在这里,我发现这使我的测试更具可读性,很明显assertXXX 的来源。但这是一个例外。在其他情况下,我发现静态导入会使事情变得更加晦涩难懂,而且我并没有真正使用它们。

【讨论】:

    【解决方案3】:

    我在使用 JUnit 的断言 (import static org.junit.Assert.*;) 以及当我有一个与相关类非常相关的 enum 时使用静态导入。

    例如:

    枚举文件:

    public enum MyEnum {
       A, B, C;
    }
    

    类文件:

    import static MyEnum.*;
    
    public class MyClass {
      MyEnum e;
    
      public setE(MyEnum newE) {
        if ( newE == A ) {
           // some verification
        }
        e = newE;
      }
    }
    

    注意我是如何做到newE == A,而不是newE == MyEnum.A。如果您在整个代码中执行大量此类操作,就会派上用场。

    【讨论】:

      【解决方案4】:

      我想说,永远不要使用通配符静态导入。

      没有通配符,根据需要,我认为它确实减少了混乱。

      【讨论】:

        【解决方案5】:

        我只在最明显的情况下使用static import。请记住:简洁的代码并不总是与可读的代码相同。

        【讨论】:

          【解决方案6】:

          如果您使用的是 IDE,则首选使用 static import。

          【讨论】:

            【解决方案7】:

            转换现有的工作代码根本不重要,实际上这只是不必要的成本和风险。

            您可以考虑将它用于新代码,如果您能找到它的引人注目的用途。我还没有,但我可能会......

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-11-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-03-15
              相关资源
              最近更新 更多