在Java中,我們通常是直接通過import 包名.類名,直接載入特定類,並對其進行操作。
而Java中,除了普通的import之外還有一個,import static用於向類中引入特定的內容。
import static與import不同的是,單純的import用於引入特定的類,而import static則是引入特定類中靜態的字段和方法。
例如我們現在有一個類,如下:
package com.kifile.demo;
public class StaticClass {
public static int i = 12;
public int j = 5;
public static void test() {
System.out.println("test");
}
public void test2() {
System.out.println("123");
}
}
在StaticClass這個類中,我們有一個靜態字段,一個非靜態字段,一個靜態方法,一個非靜態方法。
然後我們有一個測試類,如下:
package com.kifile.demo;
import static com.kifile.demo.StaticClass.*;
public class Test {
public static void main(String[] args){
System.out.println(i);
test();
// System.out.println(j); Error
// test2(); Error
}
}
我們現在類的前方,類似於普通的Import一樣,將StaticClass中的相關屬性進行靜態導入,請留意,我們在靜態引入時的名稱爲com.kifile.demo.StaticClass.*,而不是com.kifile.demo.StaticClass。這說明我們希望引入的是特定類內部的字段,屬性,而非特定類本身。
之後通過測試我們發現,當我們使用靜態導入類中的靜態字段和方法時一切正常,當我們使用非靜態對象時編譯時報錯。這說明,通過靜態導入,我們能夠正常調取類中的靜態對象,但是無法對非靜態對象進行調用
同普通的import類似,import static可以對你希望引入的字段或屬性進行選擇,例如在本例中,我們就可以講import static com.kifile.demo.StaticClass.*替換爲import static com.kifile.demo.StaticClass.i和import static com.kifile.demo.StaticClass.test,其效果一致,但是會屏蔽掉其他不使用的靜態對象。