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

Java SE 反射專題(一):Class 類的三種獲取方式與實例化

     編輯:Java 綜合教學

Java SE 反射專題(一):Class 類的三種獲取方式與實例化

核心觀點

在面向物件世界裡,「類也是物件」,是 java.lang.Class 的實例。一個類在 JVM 中只對應一個 Class 物件。

三種獲取 Class 物件的方式

Foo foo = new Foo();

// 1. 類字面量 —— 編譯期已知類型
Class c1 = Foo.class;

// 2. 實例 getClass() —— 運行期持有實例
Class c2 = foo.getClass();

// 3. 全限定名動態載入 —— 字串形式,需處理異常
Class c3 = null;
try {
    c3 = Class.forName("com.tsh.reflect.Foo");
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}

// 驗證單例特性
System.out.println(c1 == c2); // true

透過 Class 物件建立實例

try {
    // 需類有 public 無參構造器
    Foo foo2 = (Foo) c1.newInstance();
    foo2.print();
} catch (InstantiationException | IllegalAccessException e) {
    e.printStackTrace();
}

應用場景

  • 框架容器(Spring、Hibernate)掃描類並實例化 Bean
  • 動態載入驅動程式(JDBC Class.forName("com.mysql.jdbc.Driver"))
  • 熱插拔、插件系統

掌握 Class 獲取與實例化是反射開發的入門基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved