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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

反射的用途及实现

發布時間:2024/1/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 反射的用途及实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

反射的核心是JVM在運行時才動態加載類或調用方法/訪問屬性,它不需要事先(寫代碼的時候或編譯期)知道運行對象是誰。

一、Java反射框架主要提供以下功能:

1.在運行時判斷任意一個對象所屬的類;

2.在運行時構造任意一個類的對象;

3.在運行時判斷任意一個類所具有的成員變量和方法(通過反射甚至可以調用private方法);

4.在運行時調用任意一個對象的方法

二、主要用途 :

1、反射最重要的用途就是開發各種通用框架。

三、基本反射功能的實現(反射相關的類一般都在java.lang.relfect包里):

1、獲得Class對象

使用Class類的forName靜態方法

直接獲取某一個對象的class

調用某個對象的getClass()方法

2、判斷是否為某個類的實例

用instanceof關鍵字來判斷是否為某個類的實例

3、創建實例

使用Class對象的newInstance()方法來創建Class對象對應類的實例。

先通過Class對象獲取指定的Constructor對象,再調用Constructor對象的newInstance()方法來創建實例。

4、獲取方法

getDeclaredMethods()

5、獲取構造器信息

getDeclaredMethods()

getMethods()

getMethod()

6、獲取類的成員變量(字段)信息

getFiled: 訪問公有的成員變量

getDeclaredField:所有已聲明的成員變量。但不能得到其父類的成員變量

getFileds和getDeclaredFields用法

7、調用方法

invoke()

8、利用反射創建數組

Array.newInstance()

四、注意:

由于反射會額外消耗一定的系統資源,因此如果不需要動態地創建一個對象,那么就不需要用反射。

另外,反射調用方法時可以忽略權限檢查,因此可能會破壞封裝性而導致安全問題。

總結

以上是生活随笔為你收集整理的反射的用途及实现的全部內容,希望文章能夠幫你解決所遇到的問題。

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