Java Reflection(一):Java反射指南

原文地址 作者: Jakob Jenkov 譯者:葉文海([email protected]

Java反射機制可以讓我們在編譯期(Compile Time)之外的運行期(Runtime)檢查類,接口,變量以及方法的信息。反射還可以讓我們在運行期實例化對象,調用方法,通過調用get/set方法獲取變量的值。

Java反射機制功能強大而且非常實用。舉個例子,你可以用反射機制把Java對象映射到數據庫表,就像Butterfly Persistence所做的那樣,或者把腳本中的一段語句在運行期映射到相應的對象調用方法上,就像 Butterfly Container在解析它的配置腳本時所做的那樣。

目前在互聯網上已經有不勝枚舉的Java反射指南,然而大多數的指南包括Sun公司所發佈的反射指南中都僅僅只是介紹了一些反射的表面內容以及它的潛能。

在這個系列的文章中,我們會比其他指南更深入的去理解Java反射機制,它會闡述Java反射機制的基本原理包括如何去使用數組,註解,泛型以及動態代理還有類的動態加載以及類的重載的實現。同時也會向你展示如何實現一些比較有特性的功能,比如從一個類中讀取所有的get/set方法,或者訪問一個類的私有變量以及私有方法。在這個系列的指南中同時也會說明一些非反射相關的但是令人困惑的問題,比如哪些泛型信息在運行時是有效的,一些人聲稱所有的泛型信息在運行期都會消失,其實這是不對的。

改系列文章中所描述介紹的是Java 6版本的反射機制。

Java反射的例子

下面是一個Java反射的簡單例子:


Method[] methods = MyObject.class.getMethods();

for(Method method : methods){
    System.out.println("method = " + method.getName());
}

在這個例子中通過調用MyObject類的class屬性獲取對應的Class類的對象,通過這個Class類的對象獲取MyObject類中的方法集合。迭代這個方法的集合並且打印每個方法的名字。

原創文章,轉載請註明: 轉載自併發編程網 – ifeve.com

本文鏈接地址: Java Reflection(一):Java反射指南

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章