一、两种import的区别
import static静态导入是JDK1.5中的新特性。一般我们导入一个类都用 import 包名.类名;例如:import org.elasticsearch.index.query.QueryBuilders;
而静态导入是这样:import static 包名.类名.*;例如:import static org.elasticsearch.index.query.QueryBuilders.matchQuery;
这里的多了个static,还有就是类名后面多了个 .* 。意思是导入这个类里的静态成员(静态方法、静态变量)。当然,也可以只导入某个静态方法,只要把 .* 换成静态方法名就行了。然后在这个类中,就可以直接用方法名调用静态方法,而不必用“类名.方法名()” 的方式来调用。例如:matchQuery("name", keyword)
这种方法的好处就是可以简化一些操作,例如一些工具类的静态方法,如果使了静态导入,就可以像使用自己的方法一样使用这些静态方法。
二、特点
在使用静态导入之前,我们必须了解下面几点:
- 静态导入可能会让代码更加难以阅读;
- import static和static import循序不能变;
- 如果同时导入的两个类中又有重名的静态成员,会出现编译器错误。例如:Integer类和Long类的MAX_VALUE。
- 可以导入的静态成员包括静态对象引用、静态常量和静态方法。
三、示例
举个例子来说:
用import的情况:
public static void main(String args[]){
System.out.println("输出内容");
}
用import static 的情况:
import static java.lang.System.out;
public static void main(String args[]){
out.println("输出内容");
}
两者的输出情况是一样的。