一、兩種import的區(qū)別
import static靜態(tài)導(dǎo)入是JDK1.5中的新特性。一般我們導(dǎo)入一個類都用 import 包名.類名;例如:import org.elasticsearch.index.query.QueryBuilders;
而靜態(tài)導(dǎo)入是這樣:import static 包名.類名.*;例如:import static org.elasticsearch.index.query.QueryBuilders.matchQuery;
這里的多了個static,還有就是類名后面多了個 .* 。意思是導(dǎo)入這個類里的靜態(tài)成員(靜態(tài)方法、靜態(tài)變量)。當(dāng)然,也可以只導(dǎo)入某個靜態(tài)方法,只要把 .* 換成靜態(tài)方法名就行了。然后在這個類中,就可以直接用方法名調(diào)用靜態(tài)方法,而不必用“類名.方法名()” 的方式來調(diào)用。例如:matchQuery("name", keyword)
這種方法的好處就是可以簡化一些操作,例如一些工具類的靜態(tài)方法,如果使了靜態(tài)導(dǎo)入,就可以像使用自己的方法一樣使用這些靜態(tài)方法。
二、特點
在使用靜態(tài)導(dǎo)入之前,我們必須了解下面幾點:
- 靜態(tài)導(dǎo)入可能會讓代碼更加難以閱讀;
- import static和static import循序不能變;
- 如果同時導(dǎo)入的兩個類中又有重名的靜態(tài)成員,會出現(xiàn)編譯器錯誤。例如:Integer類和Long類的MAX_VALUE。
- 可以導(dǎo)入的靜態(tài)成員包括靜態(tài)對象引用、靜態(tài)常量和靜態(tài)方法。
三、示例
舉個例子來說:
用import的情況:
public static void main(String args[]){
System.out.println("輸出內(nèi)容");
}
用import static 的情況:
import static java.lang.System.out;
public static void main(String args[]){
out.println("輸出內(nèi)容");
}
兩者的輸出情況是一樣的。