1. 程式人生 > >反射機制的理解

反射機制的理解

java反射機制的理解

以前學過很長時間反射機制,很是不理解?今天終於看到一本書講的很詳細。

所有反射機制都是通過一個類叫做Class來實現:

讓我看看書上是怎麽介紹的

Class

Class是java.lang包中的類,該類的實例用來封裝對象運行時的狀態。當一個類被加載且創建對象時,

和該類相關的一個類型為Claas的對象就會自動創建。Class類本身不提供構造方法,因此,不能使用new來構造對象

任何對象調用getClass()方法都可以獲取和該對象相關的一個Class對象看,當然也可以有其他方法得到對象。

String getName()返回類的名字

Constructor []getDeclaredConstructors()返回類的全部構造方法

Field []getDeclaredFields()返回類的全部成員變量。

Method []getDeclaredMethods()返回類的全部方法

// 這裏先介紹一下為什麽這個,就是所有類都有成員變量,Java中封裝成一個類,同理構造方法等等。

Class具有2個功能

前面已經說過了,重點介紹下,使用Class對象實例化一個對象

尤其這個方法一直困擾很久,在這裏將會變得九霄雲散。

Class.forName(String classname)throws ClassNotFoundException

這個是通過反射機制創建對象實例

通常我們是這樣的做到

類 對象名=new 類();

以上兩個方法等價,只不過一個是反射機制,可能大家不是很理解。


反射機制主要用到框架中實例化對象。

這裏舉個例子實例化。

Class Rect

{

double width,height,area;

public double getArea()

{

area=height*width;

return area;

}

}

public class Example

{

public static void main(String argss[])

{

try

{

Class cs=Class.forName("Rect");

Rect rect=(Rect)cs.newInstance()//這裏該類有無參構構造方法才可以調用。不然程序會報錯。

rect.area()

}

catch(Exception e)

{

}

}

}

主要是框架中服務器可能會調用,這個地方都是隱藏的,所以程序員學的時候感到很崩潰,今天這個問題,無疑惑可存。

本文出自 “簡答生活” 博客,請務必保留此出處http://1464490021.blog.51cto.com/4467028/1922889

反射機制的理解