今天在看開源項目的時候發現了這樣一句代碼 import static com.abin.mallchat.common.common.service.frequencycontrol.FrequencyControlStrategyFactory.TOTAL_COUNT_WITH_IN_FIX_TI ...
今天在看開源項目的時候發現了這樣一句代碼
import static com.abin.mallchat.common.common.service.frequencycontrol.FrequencyControlStrategyFactory.TOTAL_COUNT_WITH_IN_FIX_TIME_FREQUENCY_CONTROLLER;
我雖然工作了有三年時間了,但是這樣的代碼還是第一次看見,看見的第一反應我以為是jdk1.8之後出的一個新特性,查閱發現這是在1.5之後增加的一個語句,叫做“靜態導入”。不知道是忘記還是一開始學習的時候沒註意到這塊,現在來彌補一下空缺吧。
Java import static靜態導入是JDK 1.5 之後增加了一種靜態導入的語法,用於導入指定類的某個靜態成員變數、方法或全部的靜態成員變數、方法。如果一個類中的方法全部是使用 static 聲明的靜態方法,則在導入時就可以直接使用 import static 的方式導入。
語法格式如下:
import static package.ClassName.fieldName|methodName;
上面語法導入 package.ClassName 類中名為 fieldName 的靜態成員變數或者名為 methodName 的靜態方法。例如,可以使用import static java.lang.System.out;
語句來導入 java.lang.System 類的 out 靜態成員變數。
導入指定類的全部靜態成員變數、方法的語法格式如下:
import static package.ClassName.*;
上面語法中的星號只能代表靜態成員變數或方法名。
import static語句要放在package之後,類定義之前,即放在與普通 import 語句相同的位置,而且 import 語句和 import static 語句之間沒有任何順序要求。
使用 import static 可以省略類名
下麵程式使用 import static 語句來導入 java.lang.System 類下的全部靜態成員變數,從而可以將程式簡化成如下形式。
import static java.lang.System.*;
import static java.lang.Math.*;
public class StaticImportTest {
public static void main(String[] args) {
// out是java.lang.System類的靜態成員變數,代表標準輸出
// PI是java.lang.Math類的靜態成員變數,表示π常量
out.println(PI);
// 直接調用Math類的sqrt靜態方法,返回256的正平方根
out.println(sqrt(256));
}
}