首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 反射機制入門:Class 對象獲取與實例化實踐

     編輯:Java 綜合教學

Class 類三種獲取方式

// 1. 類字面量(編譯期已知)
Class cls1 = Phone.class;

// 2. 對象實例(運行期)
Phone p = new Phone();
Class cls2 = p.getClass();

// 3. 字符串全限定名(動態加載)
Class cls3 = Class.forName("com.example.Phone");

反射實例化對象

public class Phone {
    public Phone() { System.out.println("構造方法"); }
    @Override public String toString() { return "一部手機"; }
}

public class ReflectDemo {
    public static void main(String[] args) throws Exception {
        Class cls = Phone.class;
        Phone phone = cls.getDeclaredConstructor().newInstance();  // 推薦 JDK 9+
        // 或 phone = cls.newInstance(); // 已棄用,僅調用 public 無參構造
        System.out.println(phone);
    }
}

關鍵 API 速查

  • getDeclaredConstructor(paramTypes):獲取任意權限構造,需 setAccessible(true)。
  • getMethod(name, paramTypes) / getDeclaredMethod:獲取方法對象。
  • getField / getDeclaredField:訪問字段,set(obj, value) 賦值。
  • getAnnotations():讀取註解元數據。

應用場景

  1. 框架通用組件(Spring IOC、MyBatis Mapper 掃描)。
  2. 動態代理、插件熱載入。
  3. 序列化/反序列化庫(Jackson、Gson)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved