Java静态导入
今天在看开源项目的时候发现了这样一句代码
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));
}
}