JAVA的内省机制(introspector)与反射机制(reflection)
http://yangzhibin-java.iteye.com/blog/452068
JAVA的內(nèi)省機(jī)制(introspector)與反射機(jī)制(reflection)
- 博客分類:
- j2se
相對(duì)而言,反射比內(nèi)省更容易理解一點(diǎn)。用一句比較白的話來(lái)概括,反射就是讓你可以通過(guò)名稱來(lái)得到對(duì)象 ( 類,屬性,方法 ) 的技術(shù),這種技術(shù)比內(nèi)省機(jī)制使用范圍更廣泛。例如我們可以通過(guò)類名來(lái)生成一個(gè)類的實(shí)例;知道了方法名,就可以調(diào)用這個(gè)方法;知道了屬性名就可以訪問(wèn)這個(gè)屬性的值。 內(nèi)省是 Java 語(yǔ)言對(duì) Bean 類屬性、事件的一種缺省處理方法。例如類 A 中有屬性 name, 那我們可以通過(guò) getName,setName 來(lái)得到其值或者設(shè)置新的值。通過(guò) getName/setName 來(lái)訪問(wèn) name 屬性,這就是默認(rèn)的規(guī)則。 Java 中提供了一套 API 用來(lái)訪問(wèn)某個(gè)屬性的 getter/setter 方法,通過(guò)這些 API 可以使你不需要了解這個(gè)規(guī)則(但你最好還是要搞清楚),這些 API 存放于包 java.beans 中。
一般的做法是通過(guò)類 Introspector 來(lái)獲取某個(gè)對(duì)象的 BeanInfo 信息,然后通過(guò) BeanInfo 來(lái)獲取屬性的描述器( PropertyDescriptor ),通過(guò)這個(gè)屬性描述器就可以獲取某個(gè)屬性對(duì)應(yīng)的 getter/setter 方法,然后我們就可以通過(guò)反射機(jī)制來(lái)調(diào)用這些方法。下面我們來(lái)看一個(gè)例子,這個(gè)例子把某個(gè)對(duì)象的所有屬性名稱和值都打印出來(lái):
總結(jié)
以上是生活随笔為你收集整理的JAVA的内省机制(introspector)与反射机制(reflection)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: spring的log4j listene
- 下一篇: listagg 函数--oracle 1