在頭部使用的imoirt static ***方式叫做靜態引入,在Java SE 1.5.0(JDK 5)引入的特性。
官方文檔的介紹:
為了訪問靜態成員,有必要限定它們來自的類的引用。例如,必須這樣使用:
double r = Math.cos(Math.PI * theta);
為了解決這個問題,人們有時會把靜態成員放到一個接口中,並從這個接口繼承。這是一個壞主意。事實上,這是一個壞主意,它的名字是:Constant Interface Antipattern(參見Effective Java Item 17)。問題是一個類的另一個類的靜態成員的使用僅僅是一個實現細節。當一個類實現一個接口時,它就成為這個類的公共API的一部分。實現細節不應泄漏到公共API中。
靜態導入構造允許無限制地訪問靜態成員, 而不從包含靜態成員的類型繼承。相反,該程序單獨導入成員:
import static java.lang.Math.PI;或集體:
import static java.lang.Math.*;一旦靜態成員導入了,他們可以這樣使用:
double r = cos(PI * theta);
靜態導入聲明類似於正常的導入聲明。如果正常的進口聲明從包裝中導入類別,允許它們在沒有包裝資格的情況下使用,靜態導入聲明從類別導入靜態成員,允許它們在沒有類別資格的情況下使用。
那么什么時候應該使用靜態導入? 非常謹慎!只有當你試圖聲明本地副本的常量或濫用繼承(Constant Interface Antipattern)時才使用它。換句話說,當你需要頻繁訪問一個或兩個類的靜態成員時使用它。如果過度使用靜態導入功能,則可能導致程序無法讀取且無法維護,從而導致您導入的所有靜態成員污染其名稱空間。你的代碼的讀者(包括你,在你寫了幾個月后)不會知道靜態成員來自哪個類。全部導入從一個類的靜態成員可以是特別有害的可讀性; 如果只需要一個或兩個成員,請單獨導入它們。使用適當的靜態導入可以使程序更具可讀性,通過刪除重復類名稱的寫法。
參考:
https://docs.oracle.com/javase/1.5.0/docs/guide/language/static-import.html
https://www.cnblogs.com/xd502djj/archive/2012/06/18/2553925.html