關於反射的一些總結

2022-04-20 07:41:53 字數 1081 閱讀 2567

關於反射的一些總結:

1) load,loadfrom和loadfile:

load:只載入本地程式集中指定的類(通過命名空間等方式指定)。

loadfrom:通過外部相對或者絕對路徑載入指定的類庫或者exe等檔案,且重複載入相同程式集僅第一次有效;如果該程式集引用其它程式集,會被自動載入。

loadfile:通過外部相對或者絕對路徑載入指定的類庫或者exe等檔案,重複載入相同程式集最後一次有效;如果該程式集引用其它程式集,不會被自動載入。

【可具體參考我的博文:

2)getexecutingassembly,getcallingassembly和getentryassembly(assembly靜態方法):

getexecutingassembly:獲取該方法所在方法的程式集自身。

getcallingassembly:獲取呼叫該方法所在方法的程式集。

getentryassembly:

【舉例】

假設有乙個類庫a,其中有乙個方法fun使用了getexecutingassembly,那麼它會呼叫fun所在方法的程式集

如果a被b類庫使用,且b中的方法call呼叫了a的fun,且fun中使用了getcallingassembly,那麼它先獲取呼叫fun的方法(即call),然後獲取call所在的程式集

【總結】一般前者是當前專案使用,後者往往是在發布成類庫之後動態供其它程式使用,獲取其它程式的assembly等資訊。

3)獲取整個assembly中所有的類情況:

3.1)先獲取乙個assembly例項(參考方法2)。

3.2)然後使用gettypes獲取全部的type。

4)獲取某個特定命名空間下的全部類:

無直接做法,建議使用方法3的結果對namespace屬性進行判斷(是否包含某個特定命名空間名等)

5)獲取當前assembly的路徑:

5.1)先獲取乙個assembly例項(參考方法2)。

5.2)然後location屬性。

備註:location將包含完整路徑和檔名(即便檔名做了修改也無妨)。

關於反射一些總結

1.建立實體 person如下類 view code public class person displayattribute description 年齡 public int age displayattribute description 返回方法 public string getval p...

關於Java反射的一些事

乙個類中,private的屬性或方法,如何對這些屬性進行讀寫操作或方法進行呼叫呢,答案就是反射。最近在寫單元測試用例時,發現通過反射來測試一些private的方法或設定private的屬性非常實用。先看定義乙個類,其中有乙個private的屬性和乙個private的方法,並且建構函式也是乙個priv...

關於反射機制的一些示例

通過乙個物件獲得乙個完整的包名和類名 package com.ntqingniao.reflect public class client2 class demo2例項化class類物件 package com.ntqingniao.reflect public class client3 clas...