3 回答

TA貢獻1806條經(jīng)驗 獲得超8個贊
靜態(tài)導(dǎo)入的另一個合理用途是使用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,而是可以使用注釋。然后,您可以靜態(tài)導(dǎo)入斷言方法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條經(jīng)驗 獲得超12個贊
有效的Java,第二版,在第19項末尾指出,如果您發(fā)現(xiàn)自己大量使用實用程序類中的常量,則可以使用靜態(tài)導(dǎo)入。我認為這個原則適用于常量和方法的靜態(tài)導(dǎo)入。
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();
}
}
這有利有弊。它使代碼更具可讀性,代價是丟失一些關(guān)于定義方法的直接信息。但是,一個好的IDE會讓你進入定義,所以這不是一個問題。
你仍然應(yīng)該謹慎使用它,并且只有當你發(fā)現(xiàn)你自己使用導(dǎo)入文件中的東西很多次。
編輯:更新為更具體的方法,因為這是這個問題所指的。無論輸入什么(常數(shù)或方法),該原則都適用。
添加回答
舉報