Java反射的一點小歷史

今天心血來潮想了解一下Java反射機制的歷史。想知道JDK的設計者們,是在怎么樣的場景下,從語言的層面加入了這一特性。而它又是怎么樣一步步演化成今天的樣子的。

一個事物的初衷和它最后的用途,可能相去甚遠。就好像矩陣被海森堡用于量子力學,但是最初被數學家發(fā)明出來的時候,其實是為了解方程組。

一開始我以為這類文章應該一搜一大把,無奈不管谷歌百度,大部分都是以“現代”視角來寫的。只挖到一篇題為《Using Java Reflection》[1]的文章,顯示的時間戳是“January 1998”,年份夠陳(反射是1997年發(fā)布的JDK 1.1中引入的 [2]),那就從它入手吧。

文章中提到:

One tangible use of reflection is in JavaBeans, where software components can be manipulated visually via a builder tool. The tool uses reflection to obtain the properties of Java components (classes) as they are dynamically loaded.

大意是,工具可以通過反射來獲取Java組件(類)的屬性。

說實話對于沒用過JavaBeans的人來說,光看這樣的解釋還是不能理解。

再翻翻它的老底吧。

參考Wikipedia上的定義[3],又看到了這樣一句話:

It is a reusable software component written in Java that can be manipulated visually in an application builder tool.

同樣是“be manipulated visually”,跟之前的文章簡直如出一轍。在最后一節(jié)中有一個外鏈教程。終于在《A Button is a Bean》[4]中,我們看到了:

JButton Properties

標題很直白:Button是一個Bean。同時,在構建工具(build tool)中,按鈕的屬性又可以通過反射可以取得,比如圖中所示的文本、圖標。

至此,應該算是把引入反射的原因理清楚了:為了能可視化的把一個類的屬性展示給編寫B(tài)ean的用戶。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容