Java Static Import的用法


在頭部使用的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

http://blog.csdn.net/xyz_fly/article/details/8178104


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM