Java 反射機制允許程式在運行期載入、檢查、使用編譯期完全未知的類別。傳統寫法 Date d = new Date() 在編譯期就確定型別;反射則將型別決定延遲到運行時。
java.lang.ClassClass 實例。Class 繼承 Object,無 public 建構子,實例由 JVM 建立。Class 實例可建立物件、取得欄位/方法、呼叫方法等。Class.forName(String className) —— 最常用Class> cla = Class.forName("java.lang.String");
適合類別名稱以字串形式儲存(如配置檔、資料庫)的情境。
.class 語法 / .TYPE —— 編譯期已知類別Class> cla = String.class;
Class> claInt = int.TYPE; // 基本型別 int 對應的 Class
型別安全、效能最佳,適用於已知類別的靜態存取。
object.getClass() —— 從實例反推String s = "";
Class> cla = s.getClass(); // 等同 String.class
適用於手上只有物件實例,需獲取其運行時型別的情境。
擁有 Class 實例後,即可進行物件實例化、欄位存取、方法呼叫等進階操作,將在後續文章詳細示範。