3 回答
TA贡献1806条经验 获得超8个赞
静态导入的另一个合理用途是使用JUnit 4.在JUnit方法的早期版本中,类似于assertEquals并且fail自测试类扩展以来继承了这些方法junit.framework.TestCase。
// old way
import junit.framework.TestCase;
public class MyTestClass extends TestCase {
public void myMethodTest() {
assertEquals("foo", "bar");
}
}
在JUnit 4中,测试类不再需要扩展TestCase,而是可以使用注释。然后,您可以静态导入断言方法org.junit.Assert:
// new way
import static org.junit.Assert.assertEquals;
public class MyTestClass {
@Test public void myMethodTest() {
assertEquals("foo", "bar");
// instead of
Assert.assertEquals("foo", "bar");
}
}
JUnit 文档以这种方式使用它。
TA贡献1776条经验 获得超12个赞
有效的Java,第二版,在第19项末尾指出,如果您发现自己大量使用实用程序类中的常量,则可以使用静态导入。我认为这个原则适用于常量和方法的静态导入。
import static com.example.UtilityClassWithFrequentlyUsedMethods.myMethod;
public class MyClass {
public void doSomething() {
int foo= UtilityClassWithFrequentlyUsedMethods.myMethod();
// can be written less verbosely as
int bar = myMethod();
}
}
这有利有弊。它使代码更具可读性,代价是丢失一些关于定义方法的直接信息。但是,一个好的IDE会让你进入定义,所以这不是一个问题。
你仍然应该谨慎使用它,并且只有当你发现你自己使用导入文件中的东西很多次。
编辑:更新为更具体的方法,因为这是这个问题所指的。无论输入什么(常数或方法),该原则都适用。
添加回答
举报