今天我們來分析一個經典的 Java 基礎題目,考察靜態導入與類常量命名衝突時的行為表現。這類問題常出現在認證考試和面試中,理解其背後機制對掌握 Java 命名空間規則至關重要。
package Oct2016;
import static java.lang.Math.PI;
public class Ques1025 {
public final static int PI = 3; // 常量名與靜態導入的相同
public static void main(String[] args) {
System.out.println("PI=" + PI);
}
}
程序中同時存在兩個 PI 標識符:一個來自 java.lang.Math.PI 的靜態導入(值為 3.14159...),另一個是類內部定義的 public final static int PI = 3。根據 Java 語言規範,當類成員與靜態導入成員發生命名衝突時,類成員優先級最高。
主程序將輸出:
PI=3
import static package.Class.field 可直接使用常量/方法,無需類名限定這道題目生動演示了 Java 編譯器處理命名衝突的確定性規則,也是理解「就近原則」在命名空間中體現的好例題。