我应该使用静态导入吗?

时间:2010-05-07 22:06:39

标签: java import

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

7 个答案:

答案 0 :(得分:15)

正如文档所说,使用它sparingly。看看那里的理由。

答案 1 :(得分:8)

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

import static junit.framework.Assert.*;

在这里,我发现这使我的测试更具可读性,而assertXXX来自哪里显而易见。但这是一个例外。在其他情况下,我发现静态导入会使事情变得更加模糊,难以阅读而且我并没有真正使用它们。

答案 2 :(得分:4)

我在使用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。如果你在整个代码中做了很多这样的事情,那就派上用场了。

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

您可以考虑将其用于代码,如果您能找到令人信服的用途。我还没有,但我可能......