JDK 5 引入的語法糖,允許直接導入類的 靜態成員(靜態方法、靜態常數),使用時可省略類名限定。
// 導入單一靜態成員
import static java.lang.Math.PI;
import static java.lang.System.out;
// 導入該類所有靜態成員(慎用)
import static java.lang.Math.*;
import static java.util.stream.Collectors.*;
public class Circle {
public static void main(String[] args) {
double r = 5;
System.out.println("圓周長:" + (2 * Math.PI * r));
System.out.println("圓面積:" + (Math.PI * Math.pow(r, 2)));
}
}
import static java.lang.Math.PI;
import static java.lang.Math.pow;
import static java.lang.System.out;
public class Circle {
public static void main(String[] args) {
double r = 5;
out.println("圓周長:" + (2 * PI * r));
out.println("圓面積:" + (PI * pow(r, 2)));
}
}
Math.PI, Integer.MAX_VALUE)。Collectors.toList(), Stream.of(), Assert.assertEquals() (JUnit)。assertThat(actual, is(expected))、Mockito when(mock.method()).thenReturn(value)。Integer.MAX_VALUE vs Long.MAX_VALUE),導入後直接使用會編譯錯誤「reference is ambiguous」。import static pkg.*; 使方法來源不明,維護者需跳轉定義才知來處。import static java.lang.Math.PI; 而非 import static java.lang.Math.*;。Math, Collections, Objects, 測試框架斷言類。Static Import 是雙面刃:用得好能讓數學運算、測試斷言、Stream API 代碼更流暢;濫用則製造維護噩夢。原則:少用、精準用、團隊協議用。