1. 程式人生 > >【譯】1. Java反射——引言

【譯】1. Java反射——引言

*By Jakob Jenkov

  Java的反射機制使得它可以在執行時檢查類、介面、欄位、方法,而在編譯時並不不知道它們的名稱。也可以通過反射例項化新的物件,呼叫方法,get/set欄位的值。

  Java的反射機制非常強大而且非常有用。對例項而言,在執行時可以對映物件到資料庫中的表,就和 做的一樣。或者,在執行時將指令碼中的語句對映到真實物件上的方法呼叫,就和 Butterfly Container在解析它的配置指令碼時做的一樣。

  在網際網路上已經有很多關於Java反射的教程了。然而,包括Sun公司提供的在內,大多數Java反射教程都只涉及了Java反射的表面和Java反射機制的可能性。

  本教程將比我之前看到的大多數教程更深層次的觸及Java的反射機制。我將解釋Java反射的基本知識,包括如何使用陣列、註解、泛型、動態代理、類的動態載入和重新載入。也會告訴你該如何做一些比較具體的事情,如讀取類的所有getter方法,或者訪問類的私有欄位和方法。本教程也會澄清一些在執行時哪些泛型資訊可用的困惑。有些人聲稱,所有的泛型資訊在執行時都丟失了。這中理解是不對的。

  本教程將基於Java 6介紹Java的反射機制。

  • Java反射例子

  在這裡有一個快速使用Java反射的例子展示了使用反射時的樣子:

1 Method[] methods = MyObject.class
.getMethods(); 2 for(Method method : methods){ 3 System.out.println("method = " + method.getName()); 4 }

  在這個例子中得到了MyObject的Class物件。這個例子通過Class物件獲取了MyObject類中的方法列表,並且迭代打印出了各個方法的方法名。
  這一切究竟是如何工作將在整個教程的剩餘部分中進一步闡述(在其他文章中)。

  • 目錄

這是一個本教程到目前為止涵蓋的主題列表:     

(敬請期待下一篇翻譯)