日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java中的反射(一)

發布時間:2025/6/17 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中的反射(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? 在java中反射是指在運行期動態的獲取類型的信息,比如接口的信息,類的方法和成員變量。反射的入口是Class類下面我們來一起了解一下這個Class類。

? ? 在java中每個已加載的類都有一個類信息,每個對象都一個指向它所屬類信息的引用,其中類信息對應的類就是Class類(java.lang.Class)。在Object類中有一個泛型方法:getClass()方法可以獲取對象的Class對象。但是獲取Class對象的方法并不是只能通過對應的對象獲取,可以直接使用類名.class的方法獲取Class對象并且這種獲取手段同樣適用于接口和基本數據類型。Class還有一個靜態方法forName(類名)根據類名直接加載Class獲取Class對象。對于同一個類,使用這三種方式獲取的Class對象是相同的。

? ?1.名稱信息

? ? 通過Class對象我們可以獲取java類的很多的信息。我們可以通過Class對象獲取java類的名稱信息。其中常見的幾個方法為:getName()、getSimpleName()、getPackage()其中getName()返回的是Java類的全限定名,getSimpleName()獲取的是java的類名(不含包名),getPackage()返回的是java的包名。

? ? 2.字段信息

? ? 在類中定義的靜態變量和實例變量都統稱叫做字段,使用類Field表示。使用Class對象可以獲取java類中的字段對象,在Class中提拱了方法:getFields()、getDeclareFields()、getFiled(String name)、getDeclareField(String name)來獲取Filed對象,其中getFileds()表示返回所有的public字段包括父類的,getDeclareFields()表示返回本類中聲明的字段,不包含父類中聲明的字段,getField(String name)表示獲取父類或子類中聲明的public的字段,getDeclareField(String name)表示獲取在本類中聲明的字段包含非public的字段。

? ? Field對象中也定義了許多的方法來獲取字段的信息。其中有:getName(),isAccessible(),setAccessible(boolean flag),get(Object obj),set(Object obj,Object value)。其中getName()方法表示獲取字段的名稱,isAccessible()方法是用來判斷當前的程序是否有訪問當前字段的權限,setAccessible(boolean flag)當把flag的值設置為true時表示忽略java的安全檢查機制,允許訪問非public的字段,get(Object obj)表示獲取指定對象的該字段的值,set(Object obj,Object value)表示設置指定對象的該字段的值,這里需要注意如果是靜態變量那么參數obj就可以傳null。

? ? 3.方法信息

? ? 類中定義的靜態方法和實例方法都可以用類Method表示,在Class中提供了getMethods()、getDeclaredMethods()、getMethod(String name,Class<?> ...parameterTypes)和getDeclaredMethod(String name,Class<?> ...parameterTypes)來獲取method的對象,他們方法的名字和filed命名比較的相似,含義也是大同小異。這里需要說一下的是參數paramterType表示的調用方法需要傳遞的參數。

? ? 在獲取Method對象后這個Method對象也有一下方法:getName()、setAccessible(boolean flag)、invoke(Object obj,Object ... args)。這里我只介紹最后的這個方法invoke,這個方法需要倆個參數,其中obj為指定的對象,args為傳遞的參數列表,當方法是靜態方法是obj傳null即可。

? ??

轉載于:https://www.cnblogs.com/suyang-java/p/10805030.html

總結

以上是生活随笔為你收集整理的java中的反射(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。