以下內(nèi)容整理自互聯(lián)網(wǎng),僅用于個(gè)人學(xué)習(xí)
什么是反射機(jī)制
JAVA反射機(jī)制是在運(yùn)行狀態(tài)中, 對(duì)于任意一個(gè)類, 都能夠知道這個(gè)類的所有屬性和方法; 對(duì)于任意一個(gè)對(duì)象, 都能夠調(diào)用它的任意一個(gè)方法和屬性; 這種動(dòng)態(tài)獲取的信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能稱為java語言的反射機(jī)制。
反射機(jī)制所操作的對(duì)象
- Class:類對(duì)象
- Constructor:類的構(gòu)造器對(duì)象
- Field:類的屬性對(duì)象
- Method:類的方法對(duì)象
反射機(jī)制的作用
- 在運(yùn)行時(shí)判斷任意一個(gè)對(duì)象所屬的類
- 在運(yùn)行時(shí)構(gòu)造任意一個(gè)類的新對(duì)象實(shí)例(.newInstance())
- 在運(yùn)行時(shí)獲取任意一個(gè)類所具有的成員變量和方法
- 在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的方法
開發(fā)中的用處:
- 觀察或操作應(yīng)用程序的運(yùn)行時(shí)行為。
- 調(diào)試或測(cè)試程序,因?yàn)榭梢灾苯釉L問方法、構(gòu)造函數(shù)和成員字段。
- 通過名字調(diào)用不知道的方法并使用該信息來創(chuàng)建對(duì)象和調(diào)用方法。
反射機(jī)制的優(yōu)缺點(diǎn)
- 優(yōu)點(diǎn):就是可以實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建對(duì)象和編譯,體現(xiàn)出很大的靈活性,特別是在J2EE的開發(fā)中它的靈活性就表現(xiàn)的十分明顯。
- 缺點(diǎn):對(duì)性能有影響。使用反射基本上是一種解釋操作,我們可以告訴JVM,我們希望做什么并且它滿足我們的要求。這類操作總是慢于只直接執(zhí)行相同的操作。并且它饒過了源碼,會(huì)干擾原來的內(nèi)部邏輯。
反射機(jī)制獲取class的方法
- class.forName(類的路徑)
- 類名.class
- 實(shí)例.getClass()