我应该使用静态导入吗?

jav*_*guy 18 java import

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

Jhe*_*ico 15

正如文档所说,谨慎使用它.看看那里的理由.

  • 很好的答案,从未想过检查来源! (4认同)

Pas*_*ent 8

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

import static junit.framework.Assert.*;
Run Code Online (Sandbox Code Playgroud)

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


Joa*_*lho 5

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

例如:

枚举文件:

public enum MyEnum {
   A, B, C;
}
Run Code Online (Sandbox Code Playgroud)

类文件:

import static MyEnum.*;

public class MyClass {
  MyEnum e;

  public setE(MyEnum newE) {
    if ( newE == A ) {
       // some verification
    }
    e = newE;
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意我是如何做到的newE == A,而不是newE == MyEnum.A. 如果你在整个代码中做了很多这些,就会派上用场。